前提
前提として,FPSゲームをStandard AssetのFPSCharacterを用いて
動作させているという条件で考えていきます.
PS4のコントローラで視点を動かす
PS4のコントローラの右joyStickで視点を動かす方法を考えていきます.
まず Unityのタブ Edit -> Project Settings -> Input の順番でInput Managerを開く
すると,Inspector ViewにInputManagerが下の画像のようにでてきます.
このInputManagerでPS4のコントローラの値を取れるように設定していきます.
まず,普段FPSを操作するときにマウスの動きで視点を操作すると思うのでその部分をjoyStickで操作できるようにしていきます.
なので,まずInputManagerのSizeを20にします.
そして最後2つのCancelの2つを変えていきます.
特に変更した部分は Name, Positive Button, Gravity, Dead, Sensitivity, Invert, Type, Axis を変更したと思います.
なぜ,元々存在するMouse X, Mouse Yを使わないのか
元々存在するMouseXとMouseYを使わないのかと言うと
本来のMouseによる操作を変更してしまうので,PS4のコントローラを使わないときに
動作しなくなってしまうのでマウスによる操作ができるように残しています.
なので既存のMouseXとMouseYを上のように設定を変えてしまうと
Mouseで操作ができなくなってしまうので気をつけてくださいね.
さあ,この設定をするだけで視点の操作が可能になったと思います.
MouseYだけInvertにチェックする理由
PS4コントローラで右joyStickを操作するときに
Y軸の値の取得が上に動かすと値がnegative(マイナス)の値を取得し,
下に動かすと値がpositive(プラス)の値を取得するので
その符号を逆転する為にInvertにチェックしています.
PS4コントローラで自分自身を前後左右に動かす
視点操作と同様に Edit -> Project Setting -> Input でInputManagerを開く
次に,動きを与えてる部分を変更していきます.
このように変えてください.
変更する部分は,Mouse ScrollWheelの次にある HorizontalとVerticalの2つを変更します.
特に変更している部分は Invert, Type, Axis だと思います.たぶん笑
なぜVerticalだけInvertにチェックをしたのかというと
先ほどのMouseYのInvertにチェックしたのとほぼ同じ理由です.
○ボタン銃弾が打てるように設定する
人によって設定は銃弾の設定はまちまちだと思いますが
僕は左クリックで銃弾が打てるように制御していたので
このようにスクリプトを書いていました.
if (Input.GetMouseButtonDown (0)) {
audioSource.Play (); //銃声
Shot (); //撃った時の関数
Instantiate (explosion, transform.position, Quaternion.identity); //煙を出す
}
これをPS4の○ボタンで撃てるようにする為にこのコードを付け加えます
if (Input.GetMouseButtonDown (0) || Input.GetButtonDown("Fire3")) {
audioSource.Play (); //銃声
Shot (); //撃った時の関数
Instantiate (explosion, transform.position, Quaternion.identity); //煙を出す
}
Input.GetButtonDown("Fire3")を追加しました.
"Fire3"のボタンとはなんぞや
InputManagerでこのような設定になっていると思います.
ここで注目してほしいのは Positive Button の部分.
この部分に入っているのが "joystick button 2"
なぜ,joystick button 2なのかと言うと,Unity側でPS4の○ボタンが押されたときに
自動的にjoystick button 2に置き換えられているのでこのようにしています.
これで○ボタンで撃てるようになります.
最後に
PS4の書くボタンを割り当てとして参考にした記事を貼っておきます.
UnityでPS4コントローラ(DuelShock4)を使う
ただ,この記事は少しJoyStickの値の取得部分で間違っている?ので
実際取得している値を確かめたい場合はAsset StoreでこのAssetをインポートして確かめました.
Controller Tester(Asset Store)
このAsset内の controller Test のシーンで実際に
PS4コントローラのいろんなボタンを押したときに
どのボタンの名前として押されて返ってくるのかを
確かめることができるので実際に確かめてみてください.
これがわかればjumpをする際にどのボタンをどのボタンに対応させればいいのか応用が効くはずです.
頑張ってみましょう.