Unity用ヘリコプターコントローラー

Unity でヘリコプター ゲームを作成することは、ゲーム開発者にとって楽しいプロジェクトになる可能性があります。このチュートリアルでは、Unity と C# を使用して簡単なヘリコプター ゲームを作成するプロセスを説明します。ヘリコプターの動き、コントロール、および基本的な物理を設定する方法について説明します。

ステップ 1: プロジェクトのセットアップ

  • Unity を開き、新しい 3D プロジェクトを作成します。
  • 必要に応じてプロジェクト設定をセットアップします (名前、場所など)。
  • ヘリコプターのモデル、地形、スカイボックスなど、使用するアセットをインポートします。

ステップ 2: ヘリコプター ゲームオブジェクトの作成

  • 新しい空のゲームオブジェクトを作成します (「ゲームオブジェクト -> 空の作成」)。
  • わかりやすくするために、ゲームオブジェクトの名前を "Helicopter" に変更します。
  • ヘリコプターの 3D モデルをシーンにドラッグして、ゲームオブジェクトにアタッチします。

ステップ 3: Rigidbody コンポーネントの追加

  • ヘリコプターのゲームオブジェクトを選択します。
  • インスペクターウィンドウで "Add Component" をクリックします。
  • "Rigidbody" を検索し、Rigidbody コンポーネントをヘリコプターに追加します。
  • Rigidbody 設定を調整して、ヘリコプタ モデルの重量と物理特性に合わせます。

ステップ 4: ヘリコプター移動スクリプトの作成

  • 次に、ヘリコプターの動きを処理する C# スクリプトを作成します。

'HelicopterController.cs'

using UnityEngine;

public class HelicopterController : MonoBehaviour
{
    public float maxSpeed = 10f; // Maximum speed of the helicopter
    public float maxRotationSpeed = 5f; // Maximum rotation speed of the helicopter
    public float acceleration = 2f; // Acceleration factor for speed
    public float rotationAcceleration = 1f; // Acceleration factor for rotation speed
    public Transform mainRotor; // Drag the main rotor GameObject here in the Inspector
    public Transform tailRotor; // Drag the tail rotor GameObject here in the Inspector

    private Rigidbody rb;
    private float currentSpeed = 0f;
    private float currentRotationSpeed = 0f;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Get user input for movement
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        // Calculate movement direction
        Vector3 movement = new Vector3(moveHorizontal, 0f, moveVertical);

        // Apply movement to the helicopter
        rb.AddRelativeForce(movement * acceleration);

        // Calculate new speed based on acceleration
        currentSpeed = Mathf.Clamp(currentSpeed + acceleration * Time.deltaTime, 0f, maxSpeed);

        // Get user input for rotation
        float rotationInput = Input.GetAxis("Rotation");

        // Calculate rotation
        Quaternion rotation = Quaternion.Euler(0f, rotationInput * maxRotationSpeed, 0f);

        // Apply rotation to the helicopter
        rb.MoveRotation(rb.rotation * rotation);

        // Rotate main rotor
        mainRotor.Rotate(Vector3.up * currentSpeed * Time.deltaTime * 100f);

        // Rotate tail rotor
        tailRotor.Rotate(Vector3.right * currentSpeed * Time.deltaTime * 500f);

        // Calculate new rotation speed based on acceleration
        currentRotationSpeed = Mathf.Clamp(currentRotationSpeed + rotationAcceleration * Time.deltaTime, 0f, maxRotationSpeed);
    }
}

ステップ 5: スクリプトを添付する

  • Unity プロジェクトに という新しい C# スクリプトを作成します。
  • 上記のコードをコピーしてスクリプトに貼り付けます。
  • スクリプトをインスペクター ウィンドウのヘリコプター ゲームオブジェクトにアタッチします。

ステップ 6: 入力の構成

  • 'Edit -> Project Settings -> Input Manager' に移動します。
  • 水平、垂直、回転の入力軸を設定します。入力にはキーまたはジョイスティックの軸を使用できます。

ステップ 7: テスト

  • Unity エディターで [Play] を押して、ヘリコプター ゲームをテストします。
  • 設定された入力キーを使用して、ヘリコプターの動きと回転を制御します。
  • スクリプト内の 'maxSpeed'、'maxRotationSpeed'、'acceleration'、および 'rotationAcceleration' 変数を調整して、ヘリコプターの動作を微調整します。

結論

Unity で基本的なヘリコプター ゲームを作成しました。ここから、障害物、地形、敵、およびより高度な機能を追加してゲームを拡張できます。

おすすめの記事
Unity の 2D プラットフォーマー キャラクター コントローラーにダブル ジャンプ サポートを追加する
Unityでクレーンコントロールを作る方法
Unity用カーコントローラー
キャラクター コントローラー Unity でリジッドボディをプッシュする機能を追加する方法
Unity用飛行機コントローラー
Unity でパルクール システムを実装する
Unity の FPS プレーヤーにしゃがみを追加する