砲台の照準
以下の作業結果は、
レポートフォルダのUnityPackageファイル
GP14Ex4.unitypackage
のQuaternionTestシーンに含まれている。(このパッケージファイルにはEx3とEx4内容が混ざっている)
ターゲットに照準する。あるいは敵の方を向く。
GameObjectの +Z方向 をターゲットに向ける方法色々。
以下に出てくるコードでは回転(rotation)はQuaternion (w , x, y, z) で扱われている。
オイラー角(Z軸回転→X軸回転→Y軸回転)を使用するには変換が必要。
砲台の回転速度に制限を設定してターゲットを追尾させる例)
動画の赤砲台
ターゲットの移動速度に砲台の回転が追い付かない様子を表現できる。
ターゲットを常時捕捉する例1)
動画の緑砲台
砲台は水平を保つ。つまりターレットの水平回転と砲身の上下で狙うパターン。
ターゲットスコープの中心に常に的が位置する様子を表現できる。
ターゲットを常時捕捉する例2)
動画の黄砲台
砲台の水平を保たない。
常に最小回転で的合わせ可能な方向に回転して狙う。Quaternionによる回転。
砲台は左右に傾く。飛行機など回転方向に制約がない砲で狙う場合に利用できる。
この照準コードが動作するより先に的を移動させるスクリプトを実行する必要がある。
的の移動スクリプトで的が移動する前の的の初期位置に照準することにより、砲台の姿勢が意図しない方向に傾く不具合が発生する場合がある。
Unityのスクリプトの実行優先順位の設定:
メニュー Edit -> Project Settings
Script Execution Order
クオータニオンを使用しない的合わせの例)
動画には出てこない。緑砲台と同じ動きになる。
ターゲットのtransformをLookAt関数に渡すだけでよい。transformが修正される。
一定時間で的合わせを完了させる例)
動画の青砲台
クオータニオンによる回転(姿勢変更)で目標の回転状態になるまでの中間の回転量を補完して描画している。