Unityで飛行機を動かすC#スクリプトは、位置と回転をフレームごとに更新することで実現されます。ここでは、参考にされた動画のコードをもとに各部分の意味をわかりやすく解説します。
スクリプトの全体構造
スクリプトはMonoBehaviourを継承し、StartメソッドとUpdateメソッドを使用します。Startは初期化処理、Updateは毎フレーム呼ばれる更新処理です。
飛行機の前進
transform.position += transform.forward * speed * Time.deltaTime;は、飛行機を前方方向に速度speedで移動させる処理です。Time.deltaTimeを掛けることで、フレームレートに依存せず一定速度で移動できます。
入力による回転制御
float horizon = Input.GetAxis(“Horizontal”);で横方向の入力を取得します。コメントアウトされているVerticalは縦方向入力です。
①Yaw(ヨー)
yaw += horizon * yawaround * Time.deltaTime;は飛行機の左右回転を更新します。yawaroundは回転速度の係数です。
②Pitch(ピッチ)
float pitch = Mathf.Lerp(0,20,Mathf.Abs(Vertical)) * Mathf.Sign(Vertical);は縦方向の傾きを計算します。Mathf.Lerpで0~20度の範囲を入力に応じて線形補間しています。
③Roll(ロール)
float roll = Mathf.Lerp(0,30,Mathf.Abs(horizon)) * -Mathf.Sign(horizon);は横方向に傾く角度です。符号を反転することで入力方向に対して自然な傾きになります。
回転の適用
transform.localRotation = Quaternion.Euler(Vector3.up * yaw + Vector3.right * pitch + Vector3.forward * roll);は、計算したyaw、pitch、rollをQuaternionに変換して飛行機に適用する処理です。これにより滑らかな回転が実現します。
まとめ
このスクリプトでは、前進移動と入力に応じた回転を組み合わせることで飛行機の基本的な操作を実現しています。初心者の方はまずUpdate内での位置と回転の更新の流れを理解すると良いでしょう。


コメント