2016-11-05 2 views
1

私はGetTouchで特定の距離でスローしたいオブジェクトを持っています。私のコードは動作していますが、スクリーンに複数回タッチするとオブジェクトが複数回動きます。何度も画面をタッチしたりスワイプしたりしてもオブジェクトは1回だけ動くようにしたい。これは私が試したことだ。1回目のタッチ後にゲットタッチが消える

public class RealBallMove : MonoBehaviour { 

public float speed; 
public Rigidbody rb; 


void Start() 
{ 
    rb = GetComponent<Rigidbody>(); 
} 

void Update() 
{ 
    if (Input.touchCount >0 && 
     Input.GetTouch(0).phase == TouchPhase.Ended || (Input.GetMouseButtonDown(0))) 
    { 
     //rb.AddForce(Vector3.forward * speed); 
     //rb.AddForce(Vector3.up * speed); 
     GetComponent<Rigidbody>().isKinematic = false; 

     GetComponent<Rigidbody>().AddForce (new Vector3(0.0f, 20.0f, 12.0f)); 
     //Destroy (GetComponent<Rigidbody>()); 
    } 

} }

答えて

2

は、単にあなたがボールを投げているかどうかを示すブール値を追加します。)

public class RealBallMove : MonoBehaviour { 

    public float speed; 
    public Rigidbody rb; 
    private bool thrown ; 


    void Start() 
    { 
     rb = GetComponent<Rigidbody>(); 
    } 

    void Update() 
    { 
     if (
      !thrown && (
      (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended) || 
      Input.GetMouseButtonDown(0)) 
     ) 
     { 
      rb.isKinematic = false; 
      rb.AddForce (new Vector3(0.0f, 20.0f, 12.0f)); 
      thrown = true ; 
     } 
    } 
} 

他のオプションは、タッチが検出されたときにスクリプトを無効にすることだろうが、スクリプトが上記の行だけで、それ以外の行はありません。

+0

ありがとうございます。 –

関連する問題