2015年1月19日月曜日

【Unity】バーチャルパッドを追加してみる【Android】

Sample Assets (beta) for Unity 4. 6 の中にある複数のバーチャルパッド、いくつかいじってみました。

参考: テラシュールブログ Unityのゲームにスマホ向けなバーチャルパッドを追加する

テラシュールブログ様には本当にお世話になっております。
バーチャルパッドを使うためには、簡潔にまとめると…

① ヒエラルキーに EventSystem を追加
② ヒエラルキーにバーチャルパッドの Prefab を追加 (MobileSingleStickControlRig, DualTouchMobileControlsなど)
③ バーチャルパッド対応のコードに切り替え (Input → CrossPlatformInputManager)
④ Mobile Input > Enable (Disableでバーチャルパッドは消え、PCのキー入力が復活)

これだけやればOKらしいのでやってみました。追加するのは MobileSingleStickControlRig にしました。
①~④までやって再生ボタンを押してみたんですがバーチャルパッドは表示されませんでした。なぜ??

とりあえず実機に落としてみよう。ということで Build Settings をアンドロイドに指定して Build&Run 。そうしたら出ました。エディタにも実機にも出ました。

これ以降は普通に Mobile Input > Enable(Disable) を切り替え、再生ボタンを押すだけでGameビューにもSceneビューにも出るようになりました。
出なかったのは最初だけ。1回ビルドしなきゃダメなんですかね?

いい感じです。Gameビューでも動くのがグッドですね。
実機でも問題なく動きます。動作は思いの外良好です。


続いて DualTouchMobileControls についてやってみましょう。
タッチできるエリアをわかりやすくするためにロボットくんに出張ってもらいました。

実機縦

実機横

設定なんてなにもいじらずに使えそうですね。
ただ実機を横にした時に少し気になったことがありました。左右差があったんです。左端が遅い。
GetAxis の返す値は Rect の左端で -1.0 、右端で +1.0 になるはずです。しかし右端 +1.0 とするならば左端は(あくまで体感ですが) -0.7 ぐらいでした。

これ、多分実機のせいです。
iPad とかでもそうなんですけどスマホとかタッチパネルの画面端って補正がかかっていて少し内側をタップさせるんですよね。そのせいで -1.0 より大きい値になってしまっている。
Rect のアンカー位置を調整すれば解決しそうです。

テラシュールさんの記事ではモバイルに出力すると、タップできる Rect が超小さくなると書かれていたので内心ビビっていたんですがそうはなりませんでした。よかったです。

ちなみに ReferenceResolution.cs は見つかりませんでした。
このアセット、自分が昔落とした物と内容が所々変わっているようなので(2Dロボットのステージ構成とか)もしかしたら無くなってしまったのかもしれません。
インストールが上手くいってない可能性も微レ存。Import ALL 連打したのでないとは思いますが。


バーチャルパッドについてはこれくらいで終わります。
言っちゃなんですが多分使わないので。
単純にスマホとバーチャルパッドは相性が悪い、というかイラつく原因になる可能性が非常に高いのと(そもそもこれでアクションをやりたいと思わない、自分が)、GetAxisRaw な動きの方が好きなのでボタンを配置するにしてもスティックではないんですよね。

uGUIについては絶対に必要なのでこの先もやっていきます。



<追記>
ReferenceResolution の件なんですが私の勘違いでした。スクリプトの話ではなかった。
Canvas のインスペクターで設定できる値の話でした。

モバイルでボタンが超縮小されてしまう場合、Ui Scale Mode を Scale With Screen Size に変え、ReferenceResolution にモバイルの画面サイズ(XperiaA2の場合1280×720)を入力すればいいみたいです。

1 件のコメント:

  1. MGM Resorts and MGM Resorts Casino in Atlantic City to Close
    MGM 경상북도 출장샵 Resorts Casino and Hotel 거제 출장샵 in Atlantic City will close due to low demand 시흥 출장마사지 for live 통영 출장마사지 music, restaurants, and gaming on  MGM Resorts 정읍 출장샵 Casino & Hotel

    返信削除