Unity を Joy-Con で Nintendo Switch 風にしてみた (1)

今回の企画は、まあタイトル通りなんですが
「Unity を Joy-Con で Nintendo Switch 風にしてみた」です。

言葉だけだとイメージしづらいと思いますので
写真を載せますと、こんな感じです。

Unity Nintendo Switch Joy-Con

要は、Switch を据え置き機として使う場合の「TVモード」の再現ですね。

ユニティーちゃんを Joy-Con(ジョイコン)で動かせることを目標とします。

まずは、PC に Joy-Con を接続します。

Windows上で「Bluetooth デバイスの管理」ウィンドウを開きます。

Joy-Con のシンクロボタンを長押しし、プレイヤーランプが点滅し始めるのを確認します。

そうすると Joy-Con が Bluetooth デバイスとして検出されます。

Windows & Nintendo Switch Joy-Con Bluetooth Setting 01

検出された Joy-Con (L) を選択すると「ペアリング」ボタンが出てきますのでクリックします。

Windows & Nintendo Switch Joy-Con Bluetooth Setting 02

しばらく待機しますとペアリングが完了し Joy-Con (L) が接続済みになります。

同じ要領で Joy-Con (R) も接続済みにします。

Windows & Nintendo Switch Joy-Con Bluetooth Setting 03

これで Windows PC が Joy-Con を入力デバイスとして認識されます。

次は Unity でアプリを作っていきます。

1つ目のポイントは、InputManager の設定です。

メニューバーから [Edit] > [Project Settings] > [Input] を選択します。

Inspector に InputManager が表示されます。

既存で16個ほど入力設定があると思いますので
Joy-Con 用の設定を追加するか修正するかしていきます。

Horizontal が左右の入力で、Vertical が上下の入力です。

Unity InputManager for Nintendo Switch Joy-Con

今回は不要な設定は削除しています。

Name は自分の分かりやすい名前にして大丈夫です。
後で入力を拾うときに使用します。

Axis は Joy-Con の場合、ジョイスティックの左右入力 (Horizontal) が「10th axis」で、 上下入力 (Vertical) が「9th axis」になる仕様となっています。

Joy Num は、左コントローラーと右コントローラーがそれぞれ何番かがわかる場合には指定しますが、 今回は「Get Mothin from all Joysticks」にしておいてもまあよいです。 両方のジョイスティックの信号を拾うようになります。

InputManager の設定が終わりましたら
次はプレイヤーであるユニティーちゃんにコントロールを組み込んでいきます。

時間をかけていろいろと作ってみましたが、最終的には Standard Asset として提供されている ThirdPersonController をベースに独自にスクリプトを書きました。

Unity Nintendo Switch Joy-Con Player Controller

横方向には動いたのですが、なぜか縦方向が上手く動かず、プログラムを解析していましたが Third Person Character の Ground Check Distance を 0.3 にすることで解決しました。

ようやく意図した通りの動きになりました。

Unity Nintendo Switch Joy-Con Unitychan Run

縦移動・横移動だけでなく、ジョイスティックを斜めに倒すと斜め移動します。

まあ、これで終わってもよかったのですが、 せっかくですので Third Person Character の持っているアクションも実装することにしました。

Joy-Con (R) のXボタンにジャンプを対応させます。

InputManager を開き、Xボタンの信号を拾うように設定を加えます。

Xボタンは「joystick button 1」が Joy-Con の仕様です。
ちなみに、Yボタンが「joystick button 3」、Aボタンが「joystick button 0」、Bボタンが「joystick button 2」に対応します。

Unity Nintendo Switch Joy-Con Unitychan Jump

Xボタンでユニティーちゃんがジャンプするようになりました。

また、移動しながらXボタンで、ダッシュジャンプになります。

そして、最後にYボタンにしゃがみアクションを追加しました。

Unity Nintendo Switch Joy-Con Unitychan Crouch

ちなみにこの後、Nintendo Switch の「携帯モード」を再現しようと試みてみましたが、Andoroid で立ち上げたアプリでは Joy-Con の信号を受け取れていないようで一旦断念しました。

ということで、今回の企画はここまでです。

関連記事:

 |