今回は座標と角度と距離についてのメモですはい。
GameMakerにはこんな便利な変数や関数ががあるんじゃよというメモ。
座標系
当たり前なことやちょい便利なものまで...
x
x座標
y
y座標
※ 原点はroomの左上 & GMの仕様でy座標の向きが逆(上のほうが値が小さい)
xstart
インスタンス生成時のx座標
ystart
インスタンス生成時のy座標
xprevious
1step前のx座標
yprevious
1step前のy座標
lengthdir_x(len,dir)
lenに距離、dirに角度を指定したときのx軸距離
lengthdir_y(len,dir)
lenに距離、dirに角度を指定したときのy軸距離
図に表すとこんな感じ(わかりにくくてさーせん)
ちなみにこいつを公式に直してみるとこうなる
wx = x + cos(degtorad(dir))*len
wy = y - sin(degtorad(dir))*len
(wx,wy)に知りたいx,y座標が代入されます
dirが角度でlenが距離
yはなんで引いてるかと聞かれればGMの仕様上y軸の向きが逆だからです。
距離系
wx = x - x2
wy = y - y2
(x,y)から(x2,y2)までの距離を返す
これはxとyをわけて測っているので分けて使いたい時などによく使う
ちなみにこれは向きが分かる、wx値がプラスだと右方向に-だと左方向に進んでいることが分かる
yもおんなじ感じ
point_distance(x1,y1,x2,y2)
座標(x1,y1)から(x2,y2)までの距離を返す
これは単純に距離を測りたい時に使う。
これだと向きは分からないです。マイナスの値にはならないです。
角度系
direction
インスタンスが進んでる方向を示します。(0から360)
角度を指定するだけでなく進んでる方向調べたい時も便利です。
dir =
direction
image_angle = dir
例えばこんな時とか
ちなみに座標を動かしてる場合でもちゃんとdrectionを調べてくれてるみたいです。
point_direction(x1,y1,x2,y2)
座標(x1,y1)から座標(x2,y2)までの角度を度で返してくれます。
これもよく使います。例えば時期狙いの弾を撃ちたい時などによく使いますね。
degtorad(x)
度をラジアン値で返してくれます
radtodeg(x)
ラジアン値を度で返してくれます。
とまぁ、僕が知ってる感じのやつはこれくらいでしょうか。
忘れないようにメモとして書き殴っておきました。