Unity の新しい入力システムの概要

Unity の新しい入力システムは、ゲームでの入力を処理するための、更新され、柔軟で、より直感的なアプローチを提供します。このシステムを使用すると、開発者はゲーム コントローラーから VR ハンドセットまで、さまざまなデバイスに対応し、ゲームプレイをよりダイナミックで没入感のあるものにすることができます。

1. 新しいシステムを採用する理由

Unity の 従来の入力システム は、機能が制限されており、拡張性がありませんでした。新しい入力システム は統合 API を提供し、以前の制限に対処し、最新のゲーム開発に高度な機能を提供します。

2. セットアップ

新しい入力システムの使用を開始するには、まず Unity のパッケージ マネージャーからインストールする必要があります。追加後、古いシステムから移行するには、スクリプトと設定で特定の調整が必要です。

3. 主な特長

  • アクションとバインド: 開発者は、ボタンまたはキーを直接参照する代わりに、アクションを定義し、それらのアクションを特定のキーまたはボタンにバインドします。
  • デバイスの多様性: 従来のゲームパッドからタッチスクリーンや VR ハンドセットまで、複数のデバイスを簡単にサポートします。
  • プレーヤー コントロール: コントロールを再バインドするための組み込みメカニズムを提供し、プレーヤーが好みに応じてコントロールを設定できるようにします。
  • 高度なイベント処理:イベント は、ポーリング ベースかコールバック ベースかにかかわらず、さまざまな方法で処理でき、より詳細な制御が可能になります。

4. 入力アクションの作成

入力アクションは、スクリプトを作成せずに入力動作を定義できる新しいアセット タイプです。作成したら、スクリプトにドロップして、ゲームプレイをプレイヤーの入力に直接接続できます。

5. スクリプトでの実装

  • 新しい入力システムは、Unity スクリプト環境とシームレスに統合されます。古い 'Input.GetKey' または 'Input.GetAxis' メソッドの代わりに、このシステムはスクリプト内で呼び出すことができる「アクション」を使用します。以下の例を確認してください。
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
    public float speed = 5.0f;
    private Vector2 moveInput;

    public void OnMove(InputAction.CallbackContext context)
    {
        moveInput = context.ReadValue<Vector2>();
    }

    void Update()
    {
        Vector3 move = new Vector3(moveInput.x, 0, moveInput.y) * speed * Time.deltaTime;
        transform.Translate(move);
    }
}

上記のコード例を詳しく見てみましょう。

  • 名前空間: 'UnityEngine.InputSystem' 名前空間は、新しい機能を使用するために必須です。
  • 'moveInput': この変数は、一般に水平入力と垂直入力を表す入力値を格納します。
  • 'OnMove()': パブリック関数として定義されている 'OnMove' は、Unity エディターの入力アクションに直接リンクできます。このメソッドは 'InputAction.CallbackContext' を利用して入力値を読み取り、それらを 'moveInput' 変数に割り当てます。
  • 'Update()': 'Update' メソッドでは、保存された入力値が移動方向を決定します。入力は、定義された速度とフレーム独立の動きの Unity 'Time.deltaTime' を考慮して、キャラクターの動きの 3D ベクトルに変換されます。

このスクリプトを機能させるには、Unity エディターを介して 'OnMove' メソッドを入力アクションにリンクすることが重要です。この接続により、プレーヤーが入力 (ジョイスティック を動かす、または矢印キーを押すなど) を提供すると、対応するアクションによって目的のスクリプト function がトリガーされます。

結論

Unity の新しい入力システムは、現代のゲーム開発のニーズに合わせた強力かつ必要な進化です。多用途性、精度、ユーザーのカスタマイズを提供し、ゲーム インタラクション をより魅力的で応答性の高いものにします。

おすすめの記事
初心者ゲーム開発者のための 5 つの重要なヒント
Unity でカメラをスクリプトに割り当てる方法
Unity でスクリーマー ゲームを作成する
Unity で Poppy のプレイタイムにインスピレーションを得たゲームを作成する
Unity で無限の創造性への扉を見つける
Unity のパーティクル システムの概要
Unity でモバイル ホラー ゲームを作成する