32欠片目:ゲーム制作に便利な数学関数~atan2編~
こんにちは。座右の銘は『人畜無益』のvoidです。
今回は唐突に数学関数紹介の続きをやっていきたいと思います。
おさらい
数学関数を使うときは、
#include <math.h>
が必要でしたね。
atan2(エータンツ―)
このatan2というのは、2個の引数(y, x)を基にアークタンジェントを計算するというものです。
簡単にまとめると2つの座標から角度(ラジアン値)を求めることが出来るというものです。
注意点としては、引数の順番が(y, x)と、yが第1引数に来ることです。普通の座標系に慣れているとついxが先に来てしまうので要注意です!
角度が分かりやすいように、縦が2横が2の直角二等辺三角形の角度計算を例に挙げてみます。
#include <math.h> #include <stdio.h> int main(void) { float x = 2.0; float y = 2.0; float angle = atan2(y, x); // 角度をラジアン値で求める angle = angle * (180 / 3.141592); // ラジアン値を度数法に変換する printf("%.2f", angle); return 0; }
実行結果:
45.00
図で表すとこんな感じになります。
このことを応用してあげると、プレイヤーの座標と敵の座標から、「敵がプレイヤーから見てどの方向にいるか」を調べることが出来ます。
プ:プレイヤー
プレイヤのx座標,y座標をそれぞれplayer.x,player.yで表し、
敵のx座標,y座標をそれぞれenemy.x,enemy.yで表すとします。
このように、2つのオブジェクトの座標の差を使うことで、上の図と同じように角度を導き出すことが出来ます。ホーミングとかに使えそうですね!
お疲れ様でした。疲れました。
本日は以上です。ではまた!