在第一次触摸后禁用GetTouch

本文关键字:GetTouch 第一次 触摸 | 更新日期: 2023-09-27 18:16:26

我有一个对象,我想通过GetTouch把它扔到一定距离。我的代码是工作的,但问题是,当我触摸屏幕多次,对象也移动多次。我不希望物体移动多次。我希望我的对象只移动一次,无论我触摸或滑动屏幕多少次。这是我尝试过的方法。

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>());
    }

}}

在第一次触摸后禁用GetTouch

只需添加一个布尔值,表示你是否扔过球;)

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 ;
        }
    }
}

另一种选择是在检测到触摸时禁用脚本,但只有当您的脚本只是上面的行而没有其他内容时。