こんにちは、うら干物です。
前回に引き続きUnityのCrossPlatformInputについてお話ししていきます。
今回はDualTouchControlsのPrefabについてです。
キャラクターの移動や向きの設定など多くの操作を必要とするゲームで使えそうですね。
この記事にはUnity5.4.0f3を使用しています。
- DualTouchControls
- Prefabの構成について
- CrossPlatformInputの主な使い方
- 使用されているコンポーネントについて
- TouchPad
- ButtonHandler
- サンプル
DualTouchControls
DualTouchControlsは左右に大きなタッチパネルが1つずつとボタンが1つある作りになっています。
Prefabの構成について
Prefabの構成は以下のようになっています。
- MoveTouchpad
- TurnAndLookTouchpad
- Jump
CrossPlatformInputの主な使い方
ここでCrossPlatformInputアセットを使う際に、ユーザーに入力された値の取得方法について説明致します。
前回のCarTiltControlsの時も説明したような気がしますが、この記事から閲覧した人向けとしてもう一度。
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では以下のコンポーネントが使用されています。
- TouchPad
- ButtonHandler
各コンポーネントについては次に説明します。
TouchPad
タッチパッド機能を追加するコンポーネントです。
DualTouchControlsでは、MoveTouchpadとTurnAndLookTouchpadで使用されています。
以下設定できるパラメーターです。
- AxesToUse
Both:水平方向と垂直方向の両方を使用
OnlyHorizontal:水平方向のみ使用
OnlyVertical:垂直方向のみ使用 - ControlStyle
ちょっと詳しく調べられてないです。
Absolute:絶対値?
Relative:相対値?
Swipe:スワイプ。端末のみ - HorizontalAxisName
水平方向のAxis名。
AxesToUseがBothまたはOnlyHorizontalでないと使用できない。 - VerticalAxisName
垂直方向のAxis名。
AxesToUseがBothまたはOnlyVerticalでないと使用できない。 - Xsensitivity
水平方向の感度。
水平方向の取得された値にこの数値が掛けられます。 - Ysensitivity
垂直方向の感度。
垂直方向の取得された値にこの数値が掛けられます。
ButtonHandler
ボタンの状態を取得するコンポーネントです。
CrossPlatformInputでは2つの使い方をすることが出来ます。
DualTouchControlsでは、Jumpで使用されています。
以下設定できるパラメーターです。
- Name
ボタンの名前。
ButtonHandlerではEventTriggerに設定されている関数によって取得できる値が変わります。
DualTouchControlsでは以下の関数を使って値を取得します。
- CrossPlatformInputManager.GetButton()
- CrossPlatformInputManager.GetButtonDown()
- CrossPlatformInputManager.GetButtonUp()
サンプル
DualTouchControlsを使って今回も簡単なサンプルを作ってみましたよ。
何かの参考になればと思います。
UnityのCrossPlatformInputを使う その3 DualTouchControls編