LoginSignup
2
1

More than 3 years have passed since last update.

FPSゲームにPS4コントローラーを用いて操作する

Posted at

前提

前提として,FPSゲームをStandard AssetのFPSCharacterを用いて

動作させているという条件で考えていきます.

PS4のコントローラで視点を動かす

PS4のコントローラの右joyStickで視点を動かす方法を考えていきます.

まず Unityのタブ Edit -> Project Settings -> Input の順番でInput Managerを開く
スクリーンショット 2019-08-18 16.37.58.png

すると,Inspector ViewにInputManagerが下の画像のようにでてきます.

このInputManagerでPS4のコントローラの値を取れるように設定していきます.スクリーンショット 2019-08-18 16.43.06.png

まず,普段FPSを操作するときにマウスの動きで視点を操作すると思うのでその部分をjoyStickで操作できるようにしていきます.

なので,まずInputManagerのSizeを20にします.

そして最後2つのCancelの2つを変えていきます.

このように変更してください.
スクリーンショット 2019-08-18 16.46.41.png

特に変更した部分は 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の次にある HorizontalVerticalの2つを変更します.
スクリーンショット 2019-08-18 17.11.07.png

特に変更している部分は Invert, Type, Axis だと思います.たぶん笑

なぜVerticalだけInvertにチェックをしたのかというと

先ほどのMouseYのInvertにチェックしたのとほぼ同じ理由です.

○ボタン銃弾が打てるように設定する

人によって設定は銃弾の設定はまちまちだと思いますが

僕は左クリックで銃弾が打てるように制御していたので

このようにスクリプトを書いていました.

gun.cs

if (Input.GetMouseButtonDown (0)) {
            audioSource.Play (); //銃声
            Shot (); //撃った時の関数
            Instantiate (explosion, transform.position, Quaternion.identity); //煙を出す
        }

これをPS4の○ボタンで撃てるようにする為にこのコードを付け加えます

gun.cs

if (Input.GetMouseButtonDown (0) || Input.GetButtonDown("Fire3")) {
            audioSource.Play (); //銃声
            Shot (); //撃った時の関数
            Instantiate (explosion, transform.position, Quaternion.identity); //煙を出す
        }

Input.GetButtonDown("Fire3")を追加しました.

"Fire3"のボタンとはなんぞや

InputManagerでこのような設定になっていると思います.
スクリーンショット 2019-08-18 17.25.44.png

ここで注目してほしいのは 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をする際にどのボタンをどのボタンに対応させればいいのか応用が効くはずです.

頑張ってみましょう.

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1