【ウディタ】初心者向けテクニック2(二点間の角度の算出)

1.二点間の角度の算出


座標(x1, y1)に対する座標(x2, y2)の角度を算出する。
……と表記するとすごーく面倒な気がしてしまいますね。

キャラに置き換えてみましょう。
プレイヤーキャラから見て敵はどの角度にいるかを算出する。

どうでしょう、さっきよりは興味を持てる感じになっているでしょうか?

2.難しく考えなくてもOK


例の如くウディタには角度を算出する機能が既に備わっています(図2-1)。

f:id:ashutaru1552:20190722204029j:plain
図2-1

難しいことは考えず、
「手順通りにやると相手のいる角度がわかるらしいぞ」
ぐらいの軽い気持ちでやっていきましょう。

3.二点間の角度の算出(ウディタ)


ウディタの場合、相手と自分の座標の差分を渡すだけで
角度を算出してくれます。

例えばキャラが座標(10, 10)にいて、
敵が座標(20, 30)にいるとしたら、
差分は下記の通りになります。

差分x座標(10) = 敵のx座標(20) - キャラのx座標(10)
差分y座標(20) = 敵のy座標(30) - キャラのy座標(10)
差分y座標(20) *= - 1

これをウディタの算出機能にそれぞれ渡せばOKです(実例は図3-1)。

角度 = ウディタの角度算出機能(差分x座標, 差分y座標)

f:id:ashutaru1552:20190722212100j:plain
図3-1

y座標に-1を掛けているのは、ウディタの仕様上、
上がマイナスで下がプラスになるためです。
※ウディタの場合は画面最上部がy座標0で
 下にいくほどどんどんy座標が増えていくので、
 グラフなどのy座標とは考え方が真逆になる。

ここも混乱しやすいところだと思うので、
そういうもんなんだ理解でもOKです。

また、ウディタ側に記載もある通り、
算出された角度は掛ける10された値になっているので、
本来の角度を算出する場合は割る10する必要がある点に注意です。

が、ウディタは角度を常に掛ける10の値で扱う仕様であるため、
ピクチャなどに利用する場合はそのままでもよさそうです。

4.サンプルコモン


画面中央から見て0度~90度までの角度の範囲に
マウスカーソルがある場合に〇を表示、
ない場合は×を表示するサンプルコモンを置いておきます。

https://kazaeditor.net/asset/Tech02_SampleCommon.zip

プレイヤー機に向かって攻撃を放つ敵キャラの実装や
キャラの視野に敵キャラがいるかの判定など、
色んなことに応用出来そうですね。