こんにちは、うら干物です。
前回に引き続きUnityのCrossPlatformInputについてお話ししていきます。
今回はMobileSingleStickControlのPrefabについてです。
アクションゲームで使えそうですよ。
この記事にはUnity5.4.0f3を使用しています。
- MobileSingleStickControl
- Prefabの構成について
- CrossPlatformInputの主な使い方
- 使用されているコンポーネントについて
- ButtonHandler
- Joystick
- サンプル
MobileSingleStickControl
MobileSingleStickControlは、左側に十字キー、右側にボタンがついています。
Prefabの構成について
Prefabの構成は以下のようになっています。
- JumpButton
- MobileJoystick
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" );
使用されているコンポーネントについて
MobileSingleStickControlでは以下のコンポーネントが使用されています。
- ButtonHandler
- Joystick
各コンポーネントについては次に説明します。
ButtonHandler
ボタンの状態を取得するコンポーネントです。
CrossPlatformInputでは2つの使い方をすることが出来ます。
MobileSingleStickControlでは、JumpButtonで使用されています。
以下設定できるパラメーターです。
- Name
ボタンの名前。
ButtonHandlerではEventTriggerに設定されている関数によって取得できる値が変わります。
MobileSingleStickControlでは以下の関数を使って値を取得します。
- CrossPlatformInputManager.GetButton()
- CrossPlatformInputManager.GetButtonDown()
- CrossPlatformInputManager.GetButtonUp()
Joystick
ジョイステック操作をタッチパッドで制御できるコンポーネントです。
MobileSingleStickControlでは、MobileJoystickで使用されています。
以下設定できるパラメーターです。
- MovementRange
ジョイスティックの最大移動距離。
GetAxis()で取得できる値は移動距離に対しての割合のため、この値を大きくしても取得できる値が大きくなるわけではないです。 - AxesToUse
Both:両方向とも使用する
OnlyHorizontal:水平方向のみ
OnlyVertical:垂直方向のみ - HorizontalAxisName
水平方向のAxis名。 - VerticalAxisName
垂直方向のAxis名。
サンプル
DualTouchControlsを使って毎度おなじみの簡単なサンプルを作ってみましたよ。
何かの参考になればと思います。
UnityのCrossPlatformInputを使う その5 MobileSingleStickC ...