プログラミング初心者です!
ある方のを見て、当たり判定が距離なのかそれともほかの判断で当たったと判定されているのかわからないため、教えていただきたいです。
よろしくお願いいたします。
wx=600:wy=600 ; 画面サイズ
screen 0,wx,wy
color 0,150,150:boxf 0,0,600,600
mx=400:my=300 ; プレイヤーの座標
msp=4 ; プレイヤーの移動スピード
ms=20 ; 衝突判定円の半径
cx=500:cy=500 ;●の座標
ex=50:ey=50 ; ▼の座標
frame=0
;■
kx = 50:ky = 250;初期位置XとY
dx = 3:dy = 3 ;移動量XとY
;120秒間
countermax=120*60
counter=1
*game1
redraw 0 ; 画面更新開始
color 0,150,150:boxf 0,0,800,800
;自機
stick key,%11111 ; キー入力
if key&1 : mx=limit( mx-msp, 0, wx ) ; 左移動
if key&4 : mx=limit( mx+msp, 0, wx ) ; 右移動
if key&2 : my=limit( my-msp, 0, wy ) ; 上移動
if key&8 : my=limit( my+msp, 0, wy ) ; 下移動
pos mx-ms,my-ms
color
mes "自"
;●
dist=abs(cx-mx)+abs(cy-my) ; 敵との距離を簡易的に求める
if dist<(ms*2) : goto *gameover ; 衝突していたら*gameoverへ
;新しい座標=aline(現在の座標,追いかける座標)
cx=alien(cx,mx) ; ●のX座標を動かす
cy=alien(cy,my) ; Y座標を動かす
;▼
dist=abs(ex-mx)+abs(ey-my) ; 敵との距離を簡易的に求める
if dist<(ms*2) : goto *gameover ; 衝突していたら*gameoverへ
if sqrt( (ex-mx) * (ex-mx) + (ey-my) * (ey-my) ) < 150 {
ex=alien1(ex,mx) ; 敵のX座標を動かす
ey=alien1(ey,my) ; 敵のY座標を動かす
}else{
ex=ex ;敵のX座標を動かさない
ey=ey ;敵のY座標を動かさない
}
;■
dist=abs(kx-mx)+abs(ky-my) ; 敵との距離を簡易的に求める
if dist<(ms*2) : goto *gameover ; 衝突していたら*gameoverへ
kx + dx
ky + dy
;画面外へ出たら方向転換
if(kx < 0 | kx > 570) {
dx *= -1
}
if(ky < 0 | ky > 570) {
dy *= -1
}
pos kx - 8 , ky - 8
color 255,255,255:gmode 4,0,0,256 ;画像背景の透明化
color
mes "■"
;●
gsel 0
pos cx-ms,cy-ms
color 255,255,255:gmode 4,0,0,256 ;画像背景の透明化
color
mes "●"
;▼
gsel 0
pos ex-ms,ey-ms
color 255,255,255:gmode 4,0,0,256 ;画像背景の透明化
color
mes "▼"
;タイマー
color 0,0,0
pos 0,570:font"MS ゴシック",30
redraw 1 ; 画面更新終わり
await 1000/60 ; 1/60秒で画面を更新
frame++ ; フレームを進める
goto *game1 ; 繰り返す
*gameover
; GAME OVER時の処理
font msgothic,80
color 0,0,0:pos 130,300
mes "GAME OVER"
redraw 1
stop
;●
#defcfunc alien int value1, int value2
; 敵が追いかけてくる関数
csp=2 ; 敵の移動スピード
res=limit( value2-value1, -csp, csp )
return value1+res
;▼
#defcfunc alien1 int value3, int value4
; 敵が追いかけてくる関数
esp=2 ; 敵の移動スピード
res=limit( value4-value3, -esp, esp )
return value3+res