[Unity初心者日記] キューブを動かしてみる 2.ゲームパッド編

ヨメレバCSS
オリジナルCSS


※本サイトはアフィリエイトプログラムによる収益を得ています。
 ページ内のリンクがアフィリエイトリンクの場合があります。

前回:[Unity初心者日記] キューブを動かしてみる

キーボードの次はゲームパッドからの入力を拾ってみます。

まずPCにゲームパッドを接続しておきます。

このへんはお手持ちのものを使用して下さい。ウチにあるものを参考までに紹介しますが、一般的に入手できるもので問題ありません。(ウチのコントローラーは古すぎてレアものになってしまっているようなので…)

ちなみにウチにあるのはこれ

…ってえぇ? なんでこんな高騰してるの…? レアなの…?

(当時5~6千円、少なくとも1万超えたりはしてなかったと思うけど…)

あとはこれとか。他にもPS4のコントローラーとか接続できたりするみたいなので、そういうのでもいいかもしれません。

有線だとXboxコントローラーとかもありますね。あとセガサターンのやつとか…

セガサターンのやつはSEGA純正のUSBコントローラーだったんですよね。だから接続口以外は本物。みたいな。こっちも高騰してるな…

基本的に無線がすき。毛布にくるまってても邪魔にならないから…

スポンサーリンク
GoogleAdSence レクタングル(大)

ゲームパッドの入力設定

「Edit→Project Settings→Input」で、Input Managerがインスペクタのところに開きます。

Unity_1_4_inputmanager

実のところキーボードからの入力もここにまとめることができて、キーかゲームパッドかを意識しないでも拾うことができるようになっています。

例えばHorizontal。ひとまずすでに設定されているものを見てみると、

Unity_1_4_horizontal1

というのと、

Unity_1_4_horizontal2

という、2つの設定があります。

Typeのところが「Key or Mouse Button」と「Joystick Axis」となっているように、キーボードとジョイスティックの別々の設定ということですね。

この両方の入力をまとめて「Horizontal」として取得できる。

実際にコードを書いてみます。

まず今回動かすように、Cubeをもいっこ作成。前回のCubeControllerみたいな感じでCubeController2.csも作成。

新しく作ったCube2はわかりやすいようにちょっとずらします。

Unity_1_4_cube2

これだけだとわかりづらいから、色を変えてみます。

マテリアルの変更

ProjectでMaterialsフォルダを作成して、その下で右クリック。「Create→Material」でマテリアルが作成されます。名前を「CubeMaterial」に変更しておきます。

Unity_1_4_material

で、このマテリアルの色を変更します。

Unity_1_4_material2

適当に青い感じに。

最後にそれをCube2にドロップ。

Uniby_1_4_material3

するとこんな感じに、色が変わります。

コントローラーの入力を拾う

さてCubeController2を見ていきます。今回もUpdateにコードを追加していきます。

// ゲームパッドからの入力
gameObject.transform.position = new Vector3(
    gameObject.transform.position.x + Input.GetAxis("Horizontal"), 
    gameObject.transform.position.y + Input.GetAxis("Vertical"), 
    gameObject.transform.position.z
);

if ( Input.GetButton("Fire1") )
{
    gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, gameObject.transform.position.z + 0.1f);
}
if (Input.GetButton("Fire2"))
{
    gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, gameObject.transform.position.z - 0.1f);
}

Input.GetAxisおよびInput.GetButtonで、Input Managerにあった設定の文字列を指定することで、その入力が取得できます。

GetAxisは-1~1の入力値の取得、GetButtonはボタンが押されているかを判定しています。

今回はひとまずすでに設定されているものを使ったので、前回Spaceで接近、BackSpaceで離れていっていたのをFire1、Fire2に割り当てています。

コントローラーではボタン0と1(具体的にどのボタンかはコントローラー設定による)、キーボードでは左のCtrlとAltですね。あとマウスの右と左。

Input Managerを使うと、こういったように多種の入力をまとめて拾うことができます。

これをCube2につけて動かしてみると、前回のCubeとは違った動きをしているのがわかります。

Unity_1_4_keyinput

前回と違うのは、上下左右の移動。

前回は「キーが押されていること」を検知して、一定数を加減算していましたが、

今回はInput.GetAxisで取得されてくる値を直接加算しています。

GetAxisでは-1~1の間で、押されている長さなどに応じて値が取得されてくるのでより自然に加速したりできます。

このあたりはゲームごとの調整もありますので、前回のように一定量を加算したほうがいいものもあるかもしれません。

参考:

インプットマネージャー

UnityのInputで入力を扱う

次回:[Unity初心者日記] キューブを回転させる

スポンサーリンク
GoogleAdSence レクタングル(大)

シェアする

スポンサーリンク
GoogleAdSence レクタングル(大)