UnityのInputManagerの入力設定を変更しキャラクターの操作性を変える

記事内に広告が含まれています。

今回はUnityのInputManagerの操作キーの入力設定を変更して、ゲームのキャラクターの操作性を変更してみます。

キーの入力をやめたらすぐさま入力値を0にしたい時等はInputManagerの設定を変更する必要があります。

設定自体は簡単ですぐ出来ますし、Unityを実行中にInputManagerの値を変更してお気に入りの操作性を探すといいと思います。

スポンサーリンク

InputManagerの設定を変更する

InputManagerは

InputManagerを開く

↑のようにUnityメニュー→Edit→Project Settings→Inputを選択するとインスペクタに表示されます。

InputManagerの設定値を変更し操作性を変える

↑がHorizontal(標準設定では移動キーの横に対応)のジョイスティックの横の設定になります。

入力キーの設定等は

UnityでPS3コントローラー(ゲームパッド)に対応して動かしてみる
UnityのゲームでPS3コントローラー等のゲームパッドを使用してみます。パソコンのゲーム用コントローラーを持っていない人は便利かもしれません

等で記述しているので割愛します。

その他の設定は

Gravityはキーを離してから0に戻るまでの秒速
Deadは指定した値以下のキー入力値だった時は0にする設定
Sensitivityはターゲットの入力値になるまでの秒速
Snapにチェックを入れると反対方向のキーを押した時に値が0になる
Invertにチェックを入れるとキーの入力が反対になる

となっています。

つまり

移動キーを離した時にすぐに移動をやめたい時はGravityの値を大きくし0に戻る速さを早めます。

Input.GetAxis等で細かい入力値を取得している時に一定の値以下の入力値は0にしたい時はDeadを使います。

Input.GetAxis(“Horizontal”)の最大値は1ですが、この値に早く近づけたい時はSensitivityの値を大きくします。

ジョイスティックのSensitivityの値を大きくしすぎるとジョイスティックの移動キーを離しても動いてしまったのでここは気をつけないといけないかもしれません。

違いを試す場合は実行中にInputManagerのGravity、Dead、Sensitivityの値を変更して試すのがいいと思います(デフォルトの値を書き変えない為)。

操作感に関してはGIF動画では確認出来ない為ご自分の環境で試してみてください。(^_^;)

移動キーに関してはHorizontal(横)、Vertical(縦)の設定があり、それぞれジョイスティックとキーの設定があるので、ジョイスティックだけでなくキー操作でもキャラクターを動かす場合はキーのHorizontalやVerticalの設定も変更しておくといいと思います。

Input.GetAxisで細かい値を使用しない場合

キャラクターの操作ではInput.GetAxis(“Horizontal”)やInput.GetAxis(“Vertical”)で入力値を指定している方がほとんどだと思いますが、
Input.GetAxisは連続値を取得する時に向いていて-1から1の間の細かい小数点を取得する事が出来ます。

つまりジョイスティックの傾けをほんの少しにした場合は0.1・・・という値が返ってくるわけです。

ですが、この細かい値を使わず入力が発生した時は-1、0、1の値の3つだけを取得して操作したい事もあると思います。

Horizontalを例にすると→に動かしたら1、←に動かしたら-1、動かさない時は0の値を取得出来るようにしたい時です。

そんな時はInput.GetAxisではなく

とInput.GetAxisRawを使うと整数値を取得する事が出来ます。

ただし、↑のスクリプトでinputをfloatとしているのでお分かりの方もいると思いますが、Input.GetAxisRawでなぜか小数点が返ってきています・・・(^_^;)

値はキーボードとジョイスティックの入力によって-1 から 1 の範囲になります。 入力がスムーズになっていないので、キーボード入力はいつも -1、0、1 のどれかになります。 これは全てのキーボード入力の平衡化フィルターを自前で処理したい場合に便利です。
https://docs.unity3d.com/ja/current/ScriptReference/Input.GetAxisRaw.html

とマニュアルに記述されてはいるんですが、うーんなんでだろ?(^_^;)

InputManagerのSensitivityの値を10ぐらいにするとほぼ-1、0、1の値が返ってきます(時たま小数点あり)がこれだとInput.GetAxisでも同じなので使い分けする必要がないかもしれません。

ああ・・・・マニュアルをよく読んでみるとInput.GetAxisRawで-1、0、1の値が返ってくるのはキーボードで入力した時だけなのね・・・納得・・・(^_^;)

読み取り能力が衰えてるね・・・・((+_+))

Input.GetAxisを使ってジョイスティックの入力値を整数で取得したい場合は

と単純に条件文で分岐させて入力値を整数値に変更するといいかもしれません。

キャラクター操作でもっさりした感じがしていた方はInputManagerの設定やスクリプトの変更を試してみてはいかがでしょうか?

それでは今回はこのへんで終わります。

タイトルとURLをコピーしました