こんにちは、うら干物です。
前回に引き続きUnityのCrossPlatformInputについてお話ししていきます。
今回はMobileAircraftControlsのPrefabについてです。
名前からして飛行機の操作に使えるのでしょうか。
この記事にはUnity5.4.0f3を使用しています。
- MobileAircraftControls
- Prefabの構成について
- CrossPlatformInputの主な使い方
- 使用されているコンポーネントについて
- TiltInput
- ButtonHandler
- InputAxisScrollbar
- サンプル
MobileAircraftControls
MobileAircraftControlsは画面下に3つのボタン、そして左側にスクロールバーのついた作りになっています。
Prefabの構成について
Prefabの構成は以下のようになっています。
- Left
- Right
- Brake
- Throttle
- TiltSteerInputV
- TiltSteerInputH
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では、TiltSteerInputVとTiltSteerInputHで使用されています。
以下設定できるパラメーターです。
- AxisMapping
傾きの値を、
指定したAxis名として登録して使用する
バーチャルパッドの指定した座標として使用する。
かを選択できる。 - TiltAroundAxis
ForwardAxis:Z軸の傾きを取得する。
SidewaysAxis:X軸の傾きを取得する。 - FullTiltAngle
取得できる最大の角度。ラジアン値ではなく角度。 - CentreAngleOffset
取得した角度にオフセットとして足される角度。これもラジアン値ではなく角度。
ButtonHandler
ボタンの状態を取得するコンポーネントです。
CrossPlatformInputでは2つの使い方をすることが出来ます。
MobileAircraftControlsでは、LeftとRightとBrakeで使用されています。
以下設定できるパラメーターです。
* Name
ボタンの名前。
ButtonHandlerではEventTriggerに設定されている関数によって取得できる値が変わります。
MobileAircraftControlsでは以下の関数を使って値を取得します。
- CrossPlatformInputManager.GetAxis()を使用して、ボタンや状態によって-1か1または0が取得できます。
InputAxisScrollbar
スクロールバーの状態を取得するコンポーネントです。
MobileAircraftControlsでは、Throttleで使用されています。
以下設定できるパラメーターです。
- Axis
軸の名前。
CrossPlatformInputManager.GetAxis()の取得で指定する。
取得できる値は-1~1。
サンプル
DualTouchControlsを使って毎度おなじみの簡単なサンプルを作ってみましたよ。
何かの参考になればと思います。
UnityのCrossPlatformInputを使う その4 MobileAircraftCont ...