キャラクターの移動(Input.GetAxisRaw)

キャラクターの移動(Input.GetAxisRaw)

 Input.GetAxisRawを用いてキャラクターの移動を行うScriptを作成しました。

Script

 作成したScriptは以下の通りです。カメラをコントロールする箇所は前記事に掲載したScriptと同じです。Input.GeaAxisはキーが押されると、1もしくは-1へ徐々に近づきます。逆に、キーが離されたときは0へ徐々に近づきます。これに対し、Input.GetAxisRawは押したキーに応じて1か-1を返します。また、キーが押されていないときは0を返します。そのため、加速や減速を行う際は、自身でScriptへ記述する必要があります。よって、加速や減速を自身が決めた方法で行うことができます。

このScriptを使用するには、Edit→Project Settings→Input ManagerからHorizontal_2(Negative Button→a、Positive Button→d)、 Vertical_2(Negative Button→s、Positive Button→w) 、 Camera_Horizontal(Negative Button→left、Positive Button→right)及びCamera_Vertical(Negative Button→up、Positive Button→down) を新しく作成する必要があります。また、Charactor Controllerも必要となります。

移動方向の変更

 Input.GetAxisRawから得られる値によって、キャラクターの移動方向を決定しています。

また、マウス移動による移動方向の変更は

で行っています。そして、移動方向を変更したとき、変更する移動方向に応じて速度を0にする処理を加えています。

斜め後ろ→横へ移動方向を変える際、速度が0となるように処理されています。そのため、斜め後ろ移動から停止しようとキーを離した際、下キー→横キーの順で離されると速度が0となり、減速してから止まらずに急停止します。よって、if文に以下の条件を加えることで、これを回避しています。

同時押し

 Input.GetAxisRawはInput Managerで設定した二つのキーを同時に押すと0を返します。そのため、特に何も処理をしなければ止まってしまいます。そこで、以下のコードを追加し、同時押しがされた際に止まらないようにしました。

先に押したキーを優先

 先に押されていたキーで移動するためのコードです 。

後に押したキーを優先

 後から押されたキーで移動するためのコードです。

実行結果

 実行結果は以下の通りです。コントロールキーを押すとカーソルがロックされます。もう一度、コントロールキーを押すと解除されます。


このコンテンツはユニティちゃんライセンス条項の元に提供されています