徳島ゲーム開発ごっこ 技術ブログ

ゲームを作るために役に立ったり立たなかったりする技術を学んでいきます!

【Unity】CrossPlatformInputを使う その4 MobileAircraftControls編

 こんにちは、うら干物です。
 前回に引き続きUnityのCrossPlatformInputについてお話ししていきます。
 
 今回はMobileAircraftControlsのPrefabについてです。
 名前からして飛行機の操作に使えるのでしょうか。
f:id:urahimono:20160725163312p:plain


この記事にはUnity5.4.0f3を使用しています。

MobileAircraftControls

 MobileAircraftControlsは画面下に3つのボタン、そして左側にスクロールバーのついた作りになっています。
f:id:urahimono:20160725163318p:plain
f:id:urahimono:20160725163312p:plain

Prefabの構成について

 Prefabの構成は以下のようになっています。

  • Left
  • Right
  • Brake
  • Throttle
  • TiltSteerInputV
  • TiltSteerInputH
    f:id:urahimono:20160725163336p:plain
    f:id:urahimono:20160725163342p:plain
    f:id:urahimono:20160725163348p:plain
    f:id:urahimono:20160725163352p:plain
    f:id:urahimono:20160725163356p:plain

CrossPlatformInputの主な使い方

 ここでCrossPlatformInputアセットを使う際に、ユーザーに入力された値の取得方法について説明致します。
 これで3回目の説明になります。前回の記事のコピペなので知っている人は次の項目へー。
 CrossPlatformInputアセットにはいくつかのコンポーネントがありますが、スクリプトとしてはUnityStandardAssets.CrossPlatformInput.CrossPlatformInputManagerクラスのみアクセスすればOKです。
 CrossPlatformInputManagerクラスには多くのPublic関数があります。
 その中で以下の関数を扱えれば、CrossPlatformInputManagerは大体扱えると思いますよー。

  
// CrossPlatformInputManagerはUnityStandardAssets.CrossPlatformInputの名前空間にあります。  
// 下記はusing UnityStandardAssets.CrossPlatformInput;を使用しています。  
  
// 指定したAxisの情報が存在するかを調べる。  
bool axisExists     = CrossPlatformInputManager.AxisExists( "AxisName" );  
  
// 指定したButtonの情報が存在するかを調べる。  
bool buttonExists   = CrossPlatformInputManager.ButtonExists( "ButtonName" );  
  
// 指定したAxisのパラメーターを取得する。  
float axis          = CrossPlatformInputManager.GetAxis( "AxisName" );  
  
// 指定したButtonが押されているか調べる。  
bool button         = CrossPlatformInputManager.GetButton( "ButtonName" );  
  
// 指定したButtonが押した瞬間か調べる。  
bool buttonDown     = CrossPlatformInputManager.GetButtonDown( "ButtonName" );  
  
// 指定したButtonが上げられた瞬間か調べる。  
bool buttonUp       = CrossPlatformInputManager.GetButtonUp( "ButtonName" );  
  

使用されているコンポーネントについて

 DualTouchControlsでは以下のコンポーネントが使用されています。

  • TiltInput
  • ButtonHandler
  • InputAxisScrollbar

 各コンポーネントについては次に説明します。

TiltInput

 傾きを取得するコンポーネントです。そのためモバイル端末上でないと処理をチェックできません。
 MobileAircraftControlsでは、TiltSteerInputVTiltSteerInputHで使用されています。
f:id:urahimono:20160725163426p:plain
 以下設定できるパラメーターです。

  • AxisMapping
    傾きの値を、
    指定したAxis名として登録して使用する
    バーチャルパッドの指定した座標として使用する。
    かを選択できる。
  • TiltAroundAxis
    ForwardAxis:Z軸の傾きを取得する。
    SidewaysAxis:X軸の傾きを取得する。
  • FullTiltAngle
    取得できる最大の角度。ラジアン値ではなく角度。
  • CentreAngleOffset
    取得した角度にオフセットとして足される角度。これもラジアン値ではなく角度。

ButtonHandler

 ボタンの状態を取得するコンポーネントです。
 CrossPlatformInputでは2つの使い方をすることが出来ます。
 MobileAircraftControlsでは、LeftRightBrakeで使用されています。
f:id:urahimono:20160725163445p:plain
 以下設定できるパラメーターです。
 
* Name
ボタンの名前。

 ButtonHandlerではEventTriggerに設定されている関数によって取得できる値が変わります。
 MobileAircraftControlsでは以下の関数を使って値を取得します。
f:id:urahimono:20160725163459p:plain

  • CrossPlatformInputManager.GetAxis()を使用して、ボタンや状態によって-11または0が取得できます。

InputAxisScrollbar

 スクロールバーの状態を取得するコンポーネントです。
 MobileAircraftControlsでは、Throttleで使用されています。
f:id:urahimono:20160725163513p:plain
 以下設定できるパラメーターです。

  • Axis
    軸の名前。
    CrossPlatformInputManager.GetAxis()の取得で指定する。
    取得できる値は-11

サンプル

 DualTouchControlsを使って毎度おなじみの簡単なサンプルを作ってみましたよ。
 何かの参考になればと思います。

UnityのCrossPlatformInputを使う その4 MobileAircraftCont ...

f:id:urahimono:20160725163531g:plain

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp