GetAxisでアクションゲームのキー操作を学ぶ

ゲーム開発
Photo by Domenico Loia on Unsplash

Prototype Heroを使って検証します。

GetAxis(axisName)のように、axisNameをいうものを入力するとキーボードやジョイスティックコントローラの入力を「-1〜1」の範囲で受け取ることが出来ます。

Horizontal(水平方向)の場合

if文はさておき、Horizontalでの値をデバッグすると→に移動するとプラスに、←に移動するとマイナスにLog上の数字が変化します。

なぜ”Horizontal”と入力するのか、横だけじゃなく縦方向やEnterや他のキーを取得するにはどうしたら良いのか

axisNameについて

このルールはInput Managerという設定で管理されています。

表示するには、Edit > Project Settings > Input Managerに進むと、入力のリストが表示されます。

Negative、つまりはマイナス方向はleftキーやaキー、Positiveはrightやdキーでそれぞれ表現できます。

同じようにVerticalは上下、Fire1〜3はctrl、alt、shiftのように設定されています。

例えば、aとd、leftとrightを書き換えた場合、入力と逆の方へ進みます。
入力したキーと反対方向に進んだりするのはゲームの演出としてよくあることなので、そういう時に使えそうですね。

他にもGravity (重力)やSensitivity (感度)も使えそうです。
Gravityは何も入力がない場合に軸がニュートラルになるための速さ (ユニット/秒)で、Horizontalで0.1に設定すると、キーを離してもニュートラル(0)になかなかならないため、滑るような動きになります。氷の上を滑っているような感じ。逆に大きくするとキュッと止まることが出来ます。どちらも遊び方に影響しやすい部分です。

一方Sensitivityは軸がターゲット値に向かう速さ (ユニット/秒)。これはデジタルデバイスだけに使用できます。
これを極端に0.1に設定してみると、なかなか先に進めなくなります。

まとめ

今回は横移動の部分にフォーカスしました。

とここまで書いておいてあれなんですが、最近のコントローラはジャイロセンサやスマホのようなタッチパネルが想定されるため、InputManagerではなくInputSystemというものを使うそうです。

従来どおりの操作方法で作るのであればそのままInput Managerでも問題ありません。
まだInputManagerの廃止などの情報はないようですが、可能性としてはあり得るので気になる方は調べてみると良いでしょう。

Input Manager - Unity マニュアル
Input Managerウィンドウでは、プロジェクトの入力軸とそれに関連するアクションを定義することができます。このウィンドウにアクセスするには、Unityのメインメニューから、 Edit > Project Settings を選択し、...
タイトルとURLをコピーしました