【数学】クォータニオン超入門3 任意の方向向く【unity】

【数学】クォータニオン超入門3 任意の方向向く【unity】

c#

記述日 2020/6/28
unity 2019.3.2f1

※自分の学習メモなので誤りあるかもしれません

 

クォータニオン超入門3 ターゲットの方を向く

1回目、2回目とクォータニオンの勉強をして、なんとなくクォータニオンがわかったので、そろそろ実践。

ターゲットの方を向く。です。

1:瞬時にターゲットの方を向く

Missile01Script.cs

/// <summary>
/// 瞬時にターゲットの方を向く
/// </summary>
void ChangeDirectionNoTime()
{
 transform.LookAt(mTarget.transform);
}

なんと一行でターゲットの方を向きます。

中でどういう計算してるかわからないけどunityすげー(笑)

2:クォータニオンで補間してターゲットの方を向く

Missile01Script.cs

/// <summary>
/// 補間しながらターゲットの方を向く
/// </summary>
void ChangeDirectionInterpolation()
{
 Vector3 direction = mTarget.transform.position - transform.position;
 direction.Normalize();
 transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(direction), mTurnSpeed * Time.deltaTime);
}

こちらも非常に簡単でした。

ターゲットの座標から自分(ミサイル)座標の差(ベクトル)を出してそのベクトルを正規化、

Quaternion.LookRotationでそのベクトルの方に向けるだけです。

補間はQuaternion.RotateTowardsを使ってゆっくりと向かせています。

 

ソースコードとプロジェクト

プロジェクトダウンロード

該当シーンは「Quaternion03」になります

 

ソースコードはこちら↓

検索用

C# クォータニオン