こんにちは、うら干物です。
前回に引き続きUnityのCrossPlatformInputについてお話ししていきます。
今回はCarTiltControlsのPrefabについてです。
レースゲームの操作に使えそうです。
この記事にはUnity5.4.0f3を使用しています。
- CarTiltControls
- Prefabの構成について
- CrossPlatformInputの主な使い方
- 使用されているコンポーネントについて
- AxisTouchButton
- TouchPad
- TiltInput
- サンプル
CarTiltControls
CarTiltControlsは左右にボタンが1つずつと中央にタッチパネルがある作りになっています。
Prefabの構成について
Prefabの構成は以下のようになっています。
- Accelerator
- Brake
- TiltSteerInput
- LookUpAndDownTouchpad
CrossPlatformInputの主な使い方
ここでCrossPlatformInputアセットを使う際に、ユーザーに入力された値の取得方法について説明致します。
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" );
使用されているコンポーネントについて
CarTiltControlsでは以下のコンポーネントが使用されています。
- AxisTouchButton
- TiltInput
- TouchPad
各コンポーネントについては次に説明します。
AxisTouchButton
ボタンを押した際に、指定したAxis名に値を設定することが出来るコンポーネントです。
CarTiltControlsでは、AcceleratorとBrakeで使用されています。
以下設定できるパラメーターです。
- AxisName
軸の名前。
CrossPlatformInputManager.GetAxis()の取得で指定する。 - AxisValue
取得できる最大値。 - ResponseSpeed
現在の値が上記のAxisValueになるまでに秒間で上昇する値。
スクリプト内部でTime.deltaTimeが掛けられているため、秒間単位の値を設定する必要があります。
大きな値を指定することで、GetAxis()呼出し時に常にAxisValueの値が取得できるようになります。 - ReturnToCentreSpeed
スクリプトを見る限り使用していないように思われる。
TouchPad
タッチパッド機能を追加するコンポーネントです。
CarTiltControlsでは、LookUpAndDownTouchpadで使用されています。
以下設定できるパラメーターです。
- AxesToUse
Both:水平方向と垂直方向の両方を使用
OnlyHorizontal:水平方向のみ使用
OnlyVertical:垂直方向のみ使用 - ControlStyle
ちょっと詳しく調べられてないです。
Absolute:絶対値?
Relative:相対値?
Swipe:スワイプ。端末のみ - HorizontalAxisName
水平方向のAxis名。
AxesToUseがBothまたはOnlyHorizontalでないと使用できない。 - VerticalAxisName
垂直方向のAxis名。
AxesToUseがBothまたはOnlyVerticalでないと使用できない。 - Xsensitivity
水平方向の感度。
水平方向の取得された値にこの数値が掛けられます。 - Ysensitivity
垂直方向の感度。
垂直方向の取得された値にこの数値が掛けられます。
TiltInput
傾きを取得するコンポーネントです。そのためモバイル端末上でないと処理をチェックできません。
CarTiltControlsでは、TiltSteerInputで使用されています。
以下設定できるパラメーターです。
- AxisMapping
傾きの値を、
指定したAxis名として登録して使用する
バーチャルパッドの指定した座標として使用する。
かを選択できる。 - TiltAroundAxis
ForwardAxis:Z軸の傾きを取得する。
SidewaysAxis:X軸の傾きを取得する。 - FullTiltAngle
取得できる最大の角度。ラジアン値ではなく角度。 - CentreAngleOffset
取得した角度にオフセットとして足される角度。これもラジアン値ではなく角度。
サンプル
CarTiltControlsを使って簡単なサンプルを作ってみましたよ。
何かの参考になればと思います。
UnityのCrossPlatformInputを使う その2 CarTiltControls編