初心者で初めての質問です。情報が不足しているかもしれませんがよろしくお願いします。
Unityで作成している2Dゲームの中で、オブジェクトを自由にドラッグし移動させることができるようにしました。
オブジェクトはドラッグしていない間(アイドリング中)はアニメーション1が動いています。
アイドリング中のオブジェクトをタッチすると、トリガーが発生しアニメーション2が動きます。
具体的には、アイドリング中は寝ている動物のアニメーション、タッチすれば動物が目を覚まして動きまわり数秒後にまたアイドリング中に戻って寝ます。
問題点とやりたいこと:
ドラッグによりオブジェクトを移動させた時は、ドロップ時にアニメーション2を発生させたくないのですが、今の実装ではドラッグでオブジェクトを動かした直後にアニメーション2が動いてしまいます。ドラッグ時にクリックイベントを受け取っているのだと思いますが、このような場合、どのようにしてクリックイベントを無視しアニメーション2を発生させないようにできますか?
該当のソースコード:
html
1 2public class DogTouch : MonoBehaviour, IPointerClickHandler, IDragHandler 3{ 4 private Animator animator; 5 6 void Start() 7 { 8 animator = GetComponent <Animator> (); 9 } 10 11 public void OnDrag(PointerEventData eventData) 12 { 13 Vector3 TargetPos = Camera.main.ScreenToWorldPoint (eventData.position); 14 TargetPos.z = 0; 15 transform.position = TargetPos; 16 17 } 18 19 public void OnPointerClick (PointerEventData eventData) 20 { 21 //オブジェクトをタッチしたらアニメーション2が動作 22 GetComponent<Animator>().SetTrigger("TouchObject"); 23 24 } 25 26} 27
やりたい事がよく分からないのですが、
タッチした瞬間にアニメ2を再生して、アニメ2終了後にアニメ1に戻るという仕様ですか?
それ以外は全てアニメ1という認識で合ってますか?
わかりにくい書き方ですみません、
はい、基本アニメ1がループ再生されていて、タッチした瞬間にアニメ2が再生されます。アニメ2終了後にアニメ1に戻ります。
やりたいことは、アニメ1が再生されている状態でオブジェクトを動かした直後にアニメ2を再生させないようにすることです。今はドラッグするためにオブジェクトに触ったこともタッチしたと判定されていてオブジェクトドロップ時にアニメ2が再生されてしまいます。
オブジェクトをドラッグして動かしたときはタッチしたとは判定されたくないのです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー