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

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

【Unity】CrossPlatformInputを使う その5 MobileSingleStickControl編

 こんにちは、うら干物です。
 前回に引き続きUnityのCrossPlatformInputについてお話ししていきます。
 
 今回はMobileSingleStickControlのPrefabについてです。
 アクションゲームで使えそうですよ。
f:id:urahimono:20160725165706p:plain


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

MobileSingleStickControl

 MobileSingleStickControlは、左側に十字キー、右側にボタンがついています。
f:id:urahimono:20160725165726p:plain
f:id:urahimono:20160725165714p:plain

Prefabの構成について

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

  • JumpButton
  • MobileJoystick
    f:id:urahimono:20160725165739p:plain
    f:id:urahimono:20160725165750p:plain

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で使用されています。
f:id:urahimono:20160725165805p:plain
 以下設定できるパラメーターです。

  • Name
    ボタンの名前。

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

  • CrossPlatformInputManager.GetButton()
  • CrossPlatformInputManager.GetButtonDown()
  • CrossPlatformInputManager.GetButtonUp()

Joystick

 ジョイステック操作をタッチパッドで制御できるコンポーネントです。
 MobileSingleStickControlでは、MobileJoystickで使用されています。
f:id:urahimono:20160725165836p:plain
 以下設定できるパラメーターです。

  • MovementRange
    ジョイスティックの最大移動距離。
    GetAxis()で取得できる値は移動距離に対しての割合のため、この値を大きくしても取得できる値が大きくなるわけではないです。
  • AxesToUse
    Both:両方向とも使用する
    OnlyHorizontal:水平方向のみ
    OnlyVertical:垂直方向のみ
  • HorizontalAxisName
    水平方向のAxis名。
  • VerticalAxisName
    垂直方向のAxis名。

サンプル

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

UnityのCrossPlatformInputを使う その5 MobileSingleStickC ...

f:id:urahimono:20160725165857g:plain

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp