(設定)
・Package Managerより「Input System」をインストール
・「Yes」をクリック
・「Create Empty」オブジェクトを作成
・名前を「InputS」に変更
・「Add Component」を使って、「Player Input」コンポーネントを追加する。
・「Create Actions」をクリック
・名前を「InputS」にして、「Save」をクリック
・「Input Actions」のサブウインドウが開く(*後で使用)
・「InputS」を選択
・「Generate C# Class」にチェックを入れて「Apply」をクリック
・「InputS」スクリプトが自動作成されたことを確認
(スクリプトの作成)
*ここでは「インプットシステムを使ってボールを前後左右に動かす」スクリプトを作成します。
<サンプルコード>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ball : MonoBehaviour
{
public float speed;
private Rigidbody rb;
// ★インプットシステム
private InputS inputS;
private void Start()
{
rb = GetComponent<Rigidbody>();
// ★インプットシステム
inputS = new InputS();
inputS.Enable();
}
private void Update()
{
// ★インプットシステム
// Inoput Actionsの設定と連動
Vector2 movement2 = inputS.Player.Move.ReadValue<Vector2>();
Vector3 movement3 = new Vector3(movement2.x, 0, movement2.y);
rb.AddForce(movement3 * speed);
}
}
(コードとInput Actionsの対応関係)
・「Player」→「Move」→「ReadValue」→「Vector2」はコードに対応
・上記のコードが8つのキー(「WASD」「↑↓→←」)と対応
(実行結果)
・スクリプトをBallオブジェクトに追加してゲーム再生
・「WASD」もしくは「↑↓→←」で、ボールが前後左右に動けば成功
(ジャンプ機能の追加)
<Input Actionsの設定追加>
・「InputS」を選択
・「Edit asset」をクリック
・「Actions」の「+」をクリック
・名前を「Jump」に変更
・Action Typeは「Button」を選択
<具体的なボタンの割当て>
・「No Binding」の選択
・「▼」のクリック
・「英数モード」で「space」とタイピング
・「Soace[Keyboard]」の候補が出てきたらそれを選択クリック
・これで「Jump」と「Spaceキー」が対応します。
・「キーの設定」が完了したらサブウインドを閉じる
・「Save」をクリック
(ジャンプのコード追加)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ball : MonoBehaviour
{
public float speed;
private Rigidbody rb;
// ★インプットシステム
private InputS inputS;
private void Start()
{
rb = GetComponent<Rigidbody>();
// ★インプットシステム
inputS = new InputS();
inputS.Enable();
}
private void Update()
{
// ★インプットシステム
// Inoput Actionsの設定と連動
Vector2 movement2 = inputS.Player.Move.ReadValue<Vector2>();
Vector3 movement3 = new Vector3(movement2.x, 0, movement2.y);
rb.AddForce(movement3 * speed);
// ★追加(ジャンプ)
if(inputS.Player.Jump.triggered)
{
rb.velocity = Vector3.up * 5;
}
}
}
(実行結果)
・スペースキーを押すとジャンプすれば成功