【Unity】押しっぱなしを検知するボタンの作成 【ugui】

公開日: 11:18 ugui


Unityで押しっぱなしに反応するボタンを作成しました。











前回作成したボタンは押したかどうかを検知しますが、
押しっぱなしを検知してくれません。

アクションゲームなどでキャラクターを
移動させるボタンなどを作るならば、
押しっぱなしに反応する必要がありますね。

今回はボタンを押しっぱなしにしていると
キャラクターが前方へ移動するボタンを作成してみました。








1:ボタンを設置する



ボタンを設置する 基本設定編


前回の手順でボタンを作成します。



するとボタンのInspector内にOn Click()が設定されます。












このOn Click()はボタンを押した時にのみ
反応するものです。

ここにキャラを移動させるメソッドを設定しても
最初に押した1回しか反応しないため
押しっぱなしを検知することができないのです。



クリック以外の操作を設定するために
EventTriggerを使います。











2:スクリプトの作成


ボタンを押すことによって移動させたい
キャラに以下のスクリプトを追加しました。

 


PushDown
ボタンを押している状態

PushUp
ボタンを離している状態

Move 
キャラを移動させる


PushDown()が呼ばれている間は
pushがtrueになるため
Update()でMoveが呼び出され続けます。









3:ボタンに「Event Trigger」を追加


1:Eventを選択

























 
2:Event Triggerを選択































4:Event TriggerにEventを追加


EventTriggerを設定すれば、
ボタンをクリックする以外の操作を
設定することが可能になります。 




3:Add New Event Typeを押す









すると沢山のEventTypeが出現します。


例:
・PointerEnter
ボタンの上にカーソルが乗ると反応









今回は押しっぱなしを検知するために

・PointerDown
ボタンが押しっぱなしにされていると検知

・PointerUp
ボタンが離されると検地


の2つをを追加します。













5:呼び出すメソッドを設定する













PointerDown、PointerUpの両方のEventを設定します。



■PointerDown

1:右下の+を押す


2:左下の「None」の横のボタンを押してオブジェクトを選択

今回はボタンを押したら画面上のキャラを動かしたいので
キャラのオブジェクトを選択


3:No Functionを押してメソッドを選択

「2:スクリプトの作成」で作ったPlayer.csの
PushDown()を設定。
これでボタンを押しっぱなしにしている時に
動かしたいキャラクターにアタッチしたスクリプト
「Player.cs」のPushDownメソッドを呼び出します。



■PointerUp

PointerDownと同様の手順で進めます。
呼びだすメソッドをPushUp()にします。










6:完成


以上で完成になります。

 
















右下の赤いボタンを押しっぱなしにしていると
右方向へ移動するようになりました。









これでボタンが長押し処理が完成!



スポンサードリンク
スポンサードリンク
  • ?±??G???g???[?d????u?b?N?}?[?N???A

0 件のコメント :

コメントを投稿