1. 古い入力マネージャー
Unity では、古い入力マネージャー (InputSystemOld) がデフォルトで使用されます
スクリプトでは、Input クラスを使用してユーザーの入力操作を取得し、モバイル デバイスのマルチタッチまたは加速度センシング データにアクセスできます。Input クラスは、入力マネージャーに設定されたキーを読み取り、ユーザーの入力を監視できます。アップデート機能。
1.仮想軸
仮想軸の関連設定はプロジェクト設定で確認できます。
たとえば、入力マネージャーでは、対応するキーを確認できます。
Horizontal を例に挙げると、監視されるのはキーボードの AD と左右の矢印です。
float value=Input.GetAxis ("Horzizontal");平滑化フィルターを使用した仮想軸の値。押さない状態を0、プラス方向を1、マイナス方向を-1とし、押すと0から1または-1へと徐々に変化し、変化過程は感度によって決まります。
float value=Input.GetAxisRaw ("Horzizontal");//平滑化フィルターを使用しない仮想軸の値。(値1、0、-1)
たとえば、AD を使用してキャラクターの左右の動きを制御します。
private CharacterController characterController;//使用CharacterController组件控制物体
private void Start()
{
characterController = GetComponent<CharacterController>();//得到自身的CharacterController组件
}
private void Update()
{
float tmp_CurrentSpeed = 1.7f;//速度
float tmp_Horizontal = Input.GetAxis("Horizontal");//按下AD返回一个1~-1随时间过渡的float值
Vector3 movementDirection = characterTransform.TransformDirection(new Vector3(tmp_Horizontal,0,0));//移动的方向,参数为x,z,y
characterController.Move(tmp_CurrentSpeed * Time.deltaTime * movementDirection);//控制物体移动
}
2. キーボード入力を取得する
ジャンプモニターのキーボードスペース
bool result=Input.GetButton(“Jump”); //対応するボタンが入力されたか監視
bool result=Input.GetButtonDown(“Jump”); //対応するボタンが全押しされているかを監視
bool result=Input.GetButtonUp(“Jump”); 対応するボタンが離されたかどうかを監視します
たとえば、キャラクターのジャンプを制御する場合
private CharacterController characterController;//使用CharacterController组件控制物体
private void Start()
{
characterController = GetComponent<CharacterController>();//得到自身的CharacterController组件
}
private void Update()
{
float tmp_CurrentSpeed = 1.7f;//速度
float tmp_JumpHeight = 3.0f;//跳跃高度
float tmp_Horizontal = Input.GetAxis("Horizontal");//按下AD返回一个1~-1随时间过渡的float值
Vector3 movementDirection = characterTransform.TransformDirection(new Vector3(tmp_Horizontal,0,0));//移动的方向,参数为x,z,y
if(Input.GetButtonDown("Jump"))//当按下空格后
{
movementDirection.y = tmp_JumpHeight;
}
characterController.Move(tmp_CurrentSpeed * Time.deltaTime * movementDirection);//控制物体移动
}
3. マウス入力を取得する
bool result=Input.GetMouseButton(0);//マウスの左ボタンを押したとき
bool result=Input.GetMouseButtonDown(1);//マウスの右ボタンが押されたとき
bool result=Input.GetMouseButtonUp(2);//マウスが中央ボタンを持ち上げたとき
2. 新しい入力システムパッケージ
1. ご使用の前に
注: 新しい入力システムには、Unity 2019.4+ および .NET 4 ランタイムが必要です。古い .NET 3.5 ランタイムを使用するプロジェクトでは機能しません。
新しい入力システムをインストールするには、Unity のパッケージ マネージャーを開きます (メニュー: [ウィンドウ] > [パッケージ マネージャー])。リストから入力システムパッケージを選択し、[インストール]をクリックします。
デフォルトでは、Unity のクラシック入力マネージャー ( UnityEngine.Input
) がアクティブになり、新しい入力システムのサポートは非アクティブになります。
これにより、既存の Unity プロジェクトはそのまま動作し続けることができます。入力システム パッケージをインストールするときに、Unity は新しいバックエンドを有効にするかどうかを尋ねます。[はい]をクリックすると、Unity は新しいバックエンドを有効にし、古いバックエンドを無効にし、エディターが再起動します。
2.ご使用にあたって
PlayerInput コントロールをコントロール オブジェクトに追加します
入力アクションを作成し、右クリック -> [作成] -> [InputAction] を選択し、それを PlayerInput コンポーネントのアクションにリンクし、プロジェクトのニーズに応じてボタンを設定します。
アクションの応答を設定する コンポーネントにアクションが設定されたら、各アクションの応答を設定する必要があります。PlayerInput を使用すると、インスペクター ウィンドウの Behavior プロパティを使用して、いくつかの方法で応答を設定できます。
上のスクリーンショットでは、Unity UI と同じ方法で UnityEvents を使用する Invoke Unity Events を使用しています。Unity は、コンポーネントにリンクされたアクションごとにイベントを表示します。これにより、各イベントのターゲット メソッドを直接接続できます。上の図は、アクション内の Jump、LongJump、および TouchPosition の動作を示しています。これらはそれぞれ、PlayerController スクリプト内の公開で変更された Jump、LongJump、および Gettouchposition メソッドに接続されています。
メソッド スクリプトでは、UnityEngine.InputSystem; を使用して名前空間を使用し、PlayerInput コントロールを取得する必要があることに注意してください。
学習の過程で以下の内容を参考にさせていただきました。知識を共有してくださった方々に心より感謝いたします。