この前、分からなかった誘導弾の角度を求める式がやっと分かった。こういうときはコードを見ているだけでは駄目で、実際に手を動かして図を書いてみると分かりやすい。図を書くのはデジタルよりもまだ紙とペンのほうが手軽で早い。
ゲームプログラマになる前に覚えておきたい技術に載っていたコード。そのままでなくちょっと書き換えてある。
vector target; vector myPos; vector myAngle; // 方向角度 vector dir = target - myPos; // Y軸角度 float yAngle = atan2( dir.x, dir.z ); //180度以上差があれば+-360度して逆回し if( yAngle - myAngle.y > 180.0f ) { yAngle -= 360.0f; } else if( myAngle.y - yAngle > 180.0f ) { yAngle += 360.0f; } // X軸角度 float zxLen = sqrt( dir.x * dir.x + dir.z * dir.z ); float xAngle = atan2( dir.y, zxLen );