【问题标题】:Disable Touch Hold in Unity3d在 Unity3d 中禁用触摸保持
【发布时间】:2017-01-07 09:19:01
【问题描述】:

我正在使用脚本,所以当用户触摸屏幕时,播放器会在空中跳跃 但问题是当用户保持触摸时,播放器卡在空中并且永远不会跌倒 我怎样才能禁用触摸保持,所以当用户只触摸一次玩家跳跃一次时?

Rigidbody2D Rigid;
public float UpForce;
public float RightSpeed;

void Start()
{
    Rigid = GetComponent<Rigidbody2D> ();
}

void Update()
{
    transform.Translate (Vector2.right * Time.deltaTime * RightSpeed);
}

void FixedUpdate()
{
    foreach (Touch touch in Input.touches)
    {
        Rigid.AddForce (Vector2.up * UpForce);
    }
}

}

【问题讨论】:

    标签: c# unity3d touch


    【解决方案1】:

    您只需要为触摸阶段添加检查。在这种情况下,TouchPhase.Began 是合适的,因为它会在用户触摸屏幕时跳转。如果您希望它在用户释放触摸时跳转,请使用TouchPhase.Ended

    foreach (Touch touch in Input.touches)
    {
        if (touch.phase == TouchPhase.Began)
        {
            Rigid.AddForce(Vector2.up * UpForce);
        }
    }
    

    注意

    您应该始终在 Update() 函数中而不是在 FixedUpdate() 函数中检查 Input 事件。我建议您将该代码放在Update() 函数中。你的物理代码应该放在FixedUpdate() 函数中。

    【讨论】:

    • 嗨,您必须将我的答案中的代码放在更新函数中。我刚刚验证它可以在我的带有 Unity Remote 的设备上运行。您的 Unity Remote 可能有问题。在自己的设备上试用。
    • 另外,要查找导致此问题的原因,请在 Rigid.AddForce(Vector2.up * UpForce); 之上添加 `Debug.Log("Jumped");` 并查看是否显示在控制台中。如果是这样,那么您的刚体就有问题。
    • 我得到了 debug.log 跳转,但实际跳转没有发生
    • 谢谢程序员,我改变了upforce,一切正常!祝你好运......
    • 我正要这么说。无论如何,很高兴你能成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2014-09-05
    相关资源
    最近更新 更多