Unity で PS4 DualShock 使う

昨日の Unity ゲームの続き。キーボードの wasd で飛行機を動かしていたけれど、どうせなら PS4DualShock で動かした方が気持ちがあがると思ったのでそうした。しかし動かすだけで、今まで見えてなかった風景見ている感じがあってとても新鮮です。

DualShock4 Windows PC接続時のボタン割り当て

十字キーが button ではなく Axis だというのが違和感があって、なにかぶっ壊れているんじゃないかと思ったけれど、そうじゃなかった。あと Unity の Game View と Chrome でキーの割り当てが違ったので戸惑ったのでこれを使った。どうやって使うのかと思ったけれど、Scene が入っていて、それに切り替えて実行することで DualShock のキーがどれなのかを判断できます。

Controller Tester | Input Management | Unity Asset Store

WebGL on Google Chrome Unity Game View
Up Axis 7 positive | Button 12 Axis 8 negative
Down Axis 7 negative | Button 13 Axis 8 positive
Right Axis 6 positive | Button 15 Axis 7 positive
Left Axis 6 negative | Button 14 Axis 7 negative
⭕️ Button 1 Button 2
Button 0 Button 1
🔺 Button 3 Button 3
🟥 Button 2 Button 0

ProjectSetting の Input Manager でこんなふうにします。 f:id:markIII:20200523005328p:plain

#if UNITY_EDITOR
        float rightLeftKey = Input.GetAxis("rightLeftKeyUnityEditor");
#else
        float rightLeftKey = Input.GetAxis("rightLeftKeyWebGLChrome");
#endif
        if (rightLeftKey < 0)
        {
            transform.position += new Vector3(-0.5f, 0, 0);
            transform.rotation = Quaternion.Euler(0,0,30);
        }
        if (rightLeftKey > 0)
        {
            transform.position += new Vector3(0.5f, 0, 0);
            transform.rotation = Quaternion.Euler(0,0,-30);
        }

コードはこんなふうにしました。Quaternion で少しひねってます。あと Safari では DS が反応しなかった。なんでやろ。あとせっかくなので、飛行機を車に変えてみた。はじめて Asset を変更するということをやるので、ちょっとドキドキした。もとの飛行機にぶら下がっていた Component とか飛行機に紐づいていたカメラとか、そういうのを変更した。大過なくてよかった。

今日は VRChat 飲み会をしたが、二回目というのもあり、まあまあな感じでした。肝心のチャットがループバックして聞こえたり、音質が良くなく、結局 Slack の Call を使うという残念なことになってしまった。

面談とか One On One とか(同じか)、喋りなさいといわれれば、わりといくらでも喋っていられるので、この手の書きものもいくらでもかける。技術ブログの体ではあるけれど、感じたことやまったく関係ない発想の飛躍などをはずさないで書いていきたい。感動をストレートに書くということは、どうしたって知識のレベルを晒すことになるが、もうそこで恥ずかしがって身を固くする歳ではないと思う。そういう態度が気持ち悪いとすら思う。

自分がいいなと感じているもの、いやだなと感じているもの、やりたいこと、すごいと思うこと、そういうことを誰かに話したいんだと、そこにそれ以上の意味はないな、と思う。