HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0130
ざか敵の探知距離(3d1未解決


ざか

リンク

2010/1/30(Sat) 15:37:34|NO.30249

早速質問なんですが、自分が敵のレーダーに入ったらこっちへ来る処理(アクティブな敵)
にしたいんですが、円形の探知範囲にしたいんですがどうすればどこから近づいてもおなじ距離で
こっちへ走ってくる処理ができますか?
ちなみに3dですが平面な地面なんでxとzを使えばできると思うんですが・・・



この記事に返信する


しきり2

リンク

2010/1/30(Sat) 16:22:17|NO.30251

平面ならこんな感じ。
3次元になると、距離とかレーダー判定とかがちょっと変わるくらい。

randomize #define E_S 50//敵のレーダー距離 #define ctype distance2(%1,%2,%3,%4) sqrt((%3-%1)*(%3-%1)+(%4-%2)*(%4-%2))//二点間の距離を求める repeat 5//敵の数 E_X(cnt) = rnd(640) E_Y(cnt) = rnd(480) loop P_X = 320//自機初期座標 P_Y = 240 screen 0,640,480 color:boxf E_X-2,E_Y-2,E_X+2,E_Y+2 repeat await 1 redraw 0 color 255,255,255 boxf stick key,15 if key&1:P_X-=4 if key&2:P_Y-=4 if key&4:P_X+=4 if key&8:P_Y+=4 color ,,200:boxf P_X-2,P_Y-2,P_X+2,P_Y+2 foreach E_X if distance2(P_X,P_Y,E_X(cnt),E_Y(cnt))<E_S{//もしレーダー範囲に自機が入っていたら rad = atan(P_X-E_X(cnt),P_Y-E_Y(cnt))//自機と敵の位置から角度を求める E_X(cnt) += sin(rad)*3//三角関数で移動距離を出す E_Y(cnt) += cos(rad)*3 } color:boxf E_X(cnt)-2,E_Y(cnt)-2,E_X(cnt)+2,E_Y(cnt)+2 color 255,100,0:circle E_X(cnt)-E_S,E_Y(cnt)-E_S,E_X(cnt)+E_S,E_Y(cnt)+E_S,0 loop redraw 1 loop



ONION software Copyright 1997-2023(c) All rights reserved.