ベクトルとか距離とかの求め方は中学生になったら習うのかな?
ゲームには必須なので覚えて損はないですよ。
px = 0.0 ; 現在の座標
py = 0.0 ; 現在の座標
cx = 0.0 ; 目標の座標
cy = 0.0 ; 目標の座標
vx = 0.0 ; 現在と目標のベクトル
vy = 0.0 ; 現在と目標のベクトル
r = 10.0 ; 最低限の距離
speed = 2.0 ; 進む速度
*main
; クリック待ち
stick key, , 1
if ( key & 256 ) {
; 目標座標を保存
cx = double( mousex )
cy = double( mousey )
}
; 現在と目標の差を求める
; ベクトルの求め方は 目標-現在 = ベクトル .
vx = cx-px
vy = cy-py
; 距離の計算
dist = sqrt( ( vx*vx )+( vy*vy ) )
; 移動処理
if ( dist > r ) {
; もし dist が r より大きいなら
; ベクトルを正規化(0〜1の間で表現)する
nx = vx/dist
ny = vy/dist
; 現在から目標へ足す
px = px+( speed*nx )
py = py+( speed*ny )
}
; 表示
redraw 0
color 0, 0, 0 : boxf
color 255, 0, 0 : pos px, py : mes "A"
redraw 1
wait 1
goto *main