Visual Studio Unity -暂停/恢复按钮将触发我的跳转动画-如何修复?

sg24os4d  于 2023-02-05  发布在  其他
关注(0)|答案(4)|浏览(140)

我有这段简单的代码。我已经用if语句检查了如果我按下暂停按钮,跳跃动画不会被触发。在暂停菜单被激活后,当我点击恢复时,游戏会立即开始,角色会直接跳走。我已经试过使用协程,带有真实的和时间。timeScale = 0. 001,但动作还是会被触发,有什么解决的办法吗?

private void Jump()
    {
        if (Input.touchCount > 0 && rb.velocity.y == 0 && Input.GetTouch(0).phase == TouchPhase.Began)
        {
            startTouchPosition = Input.GetTouch(0).position;
               
            if (startTouchPosition.x < screenMinusButton.x || startTouchPosition.y < screenMinusButton.y)
                rb.velocity = new Vector2(rb.velocity.x, jumpForce);
        }
}
0pizxfdo

0pizxfdo1#

尝试把不可见的全屏面板,按钮/菜单的背面。

yfwxisqw

yfwxisqw2#

角色真的会跳还是只是动画的问题?
试着在检查器中检查你的rb.velocity。如果不可见,试着在上角启用调试模式。
如果Y没有变化,可能只是动画触发错误

kxxlusnw

kxxlusnw3#

检查事件系统是否有任何游戏对象当前被认为是活动的。如果是,触摸是在按钮上执行的,否则触摸不在按钮上。
使用UnityEngine添加。事件系统;在脚本的顶部。然后按如下所示修改代码。

if (Input.touchCount > 0 && EventSystem.current.currentSelectedGameObject == null && rb.velocity.y == 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
...
}
2hh7jdfx

2hh7jdfx4#

使用游戏对象上的是指针()

if (!EventSystem.current.IsPointerOverGameObject() && Input.touchCount > 0 && rb.velocity.y == 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
}

我最近找到了答案。

相关问题