見出し画像

Unityでのバーチャルパッドの実装+Unity Remote 5

Unityでのゲーム制作におけるバーチャルパッドの実装時にやったことを
忘れないように書き残します。
自分用の備忘録なので参考にならないかもしれません。

1.はじめに

公式アセットストアに代表的なものとして
「Standard Assets」
「Joystick Pack」
これらがあります。

スクリーンショット 2020-11-11 10.19.43

スクリーンショット 2020-11-11 10.24.51


「Standard Assets」内の「MobileSingleStickControl.prefab」を使ったものがこちら↓

スクリーンショット 2020-11-11 10.27.47

「Joystick Pack」内の「Fixed Joystick.prefab」を使用したものがこちら↓

スクリーンショット 2020-11-11 10.29.34

MobileSingleStickControlにはスティックもボタンも入ってるけど、
プレイヤーの移動に関してはJoystick Packの方がいい。
(固定タイプ、ぷにコンタイプ、追従タイプの3つが選べる)
でも、Joystick Packにはボタンが入ってない…

なので移動はJoystick Pack、
ジャンプや攻撃用のボタンはMobileSingleStickControlを使うハイブリッド方式にしました。
(ボタン用のスクリプトを自分で作れば済む話ではあるのですが)

スクリーンショット 2020-11-10 13.55.26



2.準備

公式アセットストアからそれぞれ検索しマイアセットに追加、
Window → Package Managerを開きインポートします。

スクリーンショット 2020-11-11 11.52.26

この時気をつけるのが、Joystick Packは丸ごとインポートして構わないのですが
Standard Assetsはファイル数が多いので、全てインポートしてしまうとフォルダが増えてその後の作業がやり辛くなってしまう可能性があります。

ボタンだけ使えればいいという人は下の画像の2箇所だけチェックを入れてインポートしたほうがいいかと思います。
(自分はすでにインポート済のためチェックが出来ませんでした)

スクリーンショット 2020-11-11 11.51.23



3.オブジェクトの配置

Fixed Joystick.prefab、MobileSingleStickControl.prefab、
このふたつをcanvasの子オブジェクトとして配置
(ボタンが複数必要ならCopyもしくはDuplicateして複製)

→ 11/12 追記 
(MobileSingleStickControl.prefabを直接canvasの子オブジェクトにすると表示されないようです
一度通常のオブジェクトとして配置し、その後canvasの子オブジェクトにすると表示されますが、子オブジェクトにしなくてもそのままでよさそうです)

JumpButtonの画像を好みのものと差し替えて位置と大きさを調整

MobileSingleStickControl.prefabのスティックは使わないのでイメージとスクリプトを無効化

配置したスティックやボタンで画面が隠れて見辛くなる場合は
Image → Colorを選択しRGBの下にある「A」の数値を調整すれば半透明にできます。

スクリーンショット 2020-11-11 10.56.43



4.スクリプトの修正

PlayerControllerのスクリプトを修正

ジョイスティックはpublicで項目を作り移動用のコードを書き直す
(Input.GetAxisRaw → joystickに変換)
playerのインスペクターにFixedJoystickのオブジェクトをアタッチ

public FixedJoystick joystick;              //固定ジョイスティック用

//float x = Input.GetAxisRaw("Horizontal"); //キーボード操作用(左右)
//float y = Input.GetAxisRaw("Vertical");   //キーボード操作用(上下)
float x = joystick.Horizontal;              //ジョイスティック操作用(左右)
float y = joystick.Vertical;                //ジョイスティック操作用(上下)

スクリーンショット 2020-11-11 11.19.00


ボタンは先頭にマネージャーを書いてボタン用のコードを書き直す
(Input → CrossPlatformInputManagerに変換)
Buttonのインスペクターに対応した名前を入力

using UnityStandardAssets.CrossPlatformInput;         //インプット用

//if (Input.GetButtonDown("Fire1"))                   //キーボード操作用(攻撃)
if (CrossPlatformInputManager.GetButtonDown("Fire1")) //ボタン用(攻撃)

スクリーンショット 2020-11-11 11.34.32



5.動作確認

再生して動作確認をします。
画面内のボタンで設定したとおりに動作すれば完了です。

もし動かなればアタッチし忘れてないか、コードのスペルミス等がないか確認しましょう。



6.Unity Remote 5 について

動作確認して正常に動くと安心と喜びが湧いてきます。
ただ出来れば実機にビルドして操作感を確認したいですよね。
(実機で操作したらボタンが思ったより小さかった、なんてよくあります)

これは自分の知識不足だったのですが、実機テストするのに毎回Xcodeからビルドして実機に繋いでいました。
(微調整するたびにビルドしていたので無駄に時間がかかりました)

そうしたらあるじゃないですか、Unityから直接実機テストできる
「Unity Remote 5」なるアプリが!

画像11

これをダウンロードしてPCと実機をUSBで接続、
Edit > Project Settings > Editor からAndroidもしくはiOSを選択し
再生ボタンを押せばPC上のゲーム画面と実機が同期します。
Unityでスマホアプリを制作する人には必須ですね。
(もっと早く気づいていれば良かった…)

スクリーンショット 2020-11-11 13.04.51

以上、お疲れ様でした。

この記事が気に入ったらサポートをしてみませんか?