うら干物書き

ゲームを作っています。

UnityのCrossPlatformInputを使う その2 CarTiltControls編

 こんにちは、うら干物です。
 前回に引き続きUnityのCrossPlatformInputについてお話ししていきます。
 
 今回はCarTiltControlsのPrefabについてです。
 レースゲームの操作に使えそうです。
f:id:urahimono:20160725153956p:plain


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

CarTiltControls

 CarTiltControlsは左右にボタンが1つずつと中央にタッチパネルがある作りになっています。
f:id:urahimono:20160725154006p:plain
f:id:urahimono:20160725153956p:plain

Prefabの構成について

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

  • Accelerator
  • Brake
  • TiltSteerInput
  • LookUpAndDownTouchpad
    f:id:urahimono:20160725154055p:plain f:id:urahimono:20160725154101p:plain f:id:urahimono:20160725154108p:plain f:id:urahimono:20160725154112p: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" );  
  

使用されているコンポーネントについて

 CarTiltControlsでは以下のコンポーネントが使用されています。

  • AxisTouchButton
  • TiltInput
  • TouchPad

 各コンポーネントについては次に説明します。

AxisTouchButton

 ボタンを押した際に、指定したAxis名に値を設定することが出来るコンポーネントです。
 CarTiltControlsでは、AcceleratorBrakeで使用されています。
f:id:urahimono:20160725154205p:plain  以下設定できるパラメーターです。

  • AxisName
    軸の名前。
    CrossPlatformInputManager.GetAxis()の取得で指定する。
  • AxisValue
    取得できる最大値。
  • ResponseSpeed
    現在の値が上記のAxisValueになるまでに秒間で上昇する値。
    スクリプト内部でTime.deltaTimeが掛けられているため、秒間単位の値を設定する必要があります。
    大きな値を指定することで、GetAxis()呼出し時に常にAxisValueの値が取得できるようになります。
  • ReturnToCentreSpeed
    スクリプトを見る限り使用していないように思われる。

TouchPad

 タッチパッド機能を追加するコンポーネントです。
 CarTiltControlsでは、LookUpAndDownTouchpadで使用されています。 f:id:urahimono:20160725154213p:plain  以下設定できるパラメーターです。

  • AxesToUse
    Both:水平方向と垂直方向の両方を使用
    OnlyHorizontal:水平方向のみ使用
    OnlyVertical:垂直方向のみ使用
  • ControlStyle
    ちょっと詳しく調べられてないです。
    Absolute:絶対値?
    Relative:相対値?
    Swipe:スワイプ。端末のみ
  • HorizontalAxisName
    水平方向のAxis名。
    AxesToUseがBothまたはOnlyHorizontalでないと使用できない。
  • VerticalAxisName
    垂直方向のAxis名。
    AxesToUseがBothまたはOnlyVerticalでないと使用できない。
  • Xsensitivity
    水平方向の感度。
    水平方向の取得された値にこの数値が掛けられます。
  • Ysensitivity
    垂直方向の感度。
    垂直方向の取得された値にこの数値が掛けられます。

TiltInput

 傾きを取得するコンポーネントです。そのためモバイル端末上でないと処理をチェックできません。
 CarTiltControlsでは、TiltSteerInputで使用されています。
f:id:urahimono:20160725154222p:plain  以下設定できるパラメーターです。

  • AxisMapping
    傾きの値を、
    指定したAxis名として登録して使用する
    バーチャルパッドの指定した座標として使用する。
    かを選択できる。
  • TiltAroundAxis
    ForwardAxis:Z軸の傾きを取得する。
    SidewaysAxis:X軸の傾きを取得する。
  • FullTiltAngle
    取得できる最大の角度。ラジアン値ではなく角度。
  • CentreAngleOffset
    取得した角度にオフセットとして足される角度。これもラジアン値ではなく角度。

サンプル

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

UnityのCrossPlatformInputを使う その2 CarTiltControls編

f:id:urahimono:20160725154454g:plain

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp