平面ならこんな感じ。
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