[Unity 2D] プレイヤーを動かす(Xboxコントローラー)

どうも、tatsuです!

今回はプレイヤーを動かす(Xboxコントローラー)方法について説明しようと思います。

[Unity 2D] プレイヤーを動かす(キーボード)

2019年8月9日

プレイヤーを動かす(Xboxコントローラー)

プレイヤーを動かすスクリプトは以下の通りです。今回はXboxコントローラーのスティックで動くようにしてあります。
※このスクリプトを動かしたいオブジェクト(プレイヤー)にアタッチしてください

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playerScript : MonoBehaviour
{
    // プレイヤーの歩くスピード
    private const float PLAYER_WALK_SPEED = 3f;

    void Start(){
    }

    void Update(){
        // スティックを右に倒した時の処理
        if (Input.GetAxis("Horizontal") > 0) {
            // 右に移動する
            transform.Translate(PLAYER_WALK_SPEED, 0, 0);
            // 向きを右にする
            transform.localScale = new Vector3(1, 1, 1);
        }
 
        // スティックを左に倒した時の処理
        if (Input.GetAxis("Horizontal") < 0) {
            // 左に移動する
            transform.Translate(-PLAYER_WALK_SPEED, 0, 0);
            // 向きを左にする
            transform.localScale = new Vector3(-1, 1, 1);
        }

        // スティックを上に倒した時の処理
        if (Input.GetAxis("Vertical") > 0) {
            // 上に移動する
            transform.Translate(0, PLAYER_WALK_SPEED, 0);
        }
        
        // スティックを下に倒した時の処理
        if (Input.GetAxis("Vertical") < 0) {
            // 下に移動する
            transform.Translate(0, -PLAYER_WALK_SPEED, 0);
        }
    }
}

 

キーボードとは違い、Xboxコントローラーのスティックが倒れているかどうかを検知するにはInput.GetAxisを使用します。

〇引数に”Horizontal”を渡した場合
横へ倒した際に、左側に倒したらfloat型で-1、右側に倒したら+1が返ってきます。
〇引数に”Vertical”を渡した場合
縦に倒した際に、上側に倒したらfloat型で+1、下側に倒したらfloat型で-1が返ってきます。

これを利用して、返ってくる値が0より上なのか下なのかでスティックの入力を判定することができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です