【问题标题】:Unity - Pause/Resume Button will trigger my jump animation - How to fix?Unity - 暂停/恢复按钮会触发我的跳跃动画 - 如何解决?
【发布时间】:2020-11-16 10:58:52
【问题描述】:

我有这个简单的代码。我已经使用 if 语句来检查如果我按下暂停按钮,跳转动画将不会被触发。激活暂停菜单后,当我点击恢复时,游戏将立即开始,角色将立即跳跃。 我曾尝试使用实时和 time.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);
        }
}

【问题讨论】:

标签: c# visual-studio unity3d


【解决方案1】:

尝试将不可见的全屏面板放在按钮/菜单的后面。

【讨论】:

  • 我有一个画布,多个面板,一切正常。
【解决方案2】:

角色真的会跳跃还是只是动画问题?

尝试在检查器中检查您的 rb.velocity。如果不可见,请尝试在右上角启用调试模式。

如果 Y 没有变化,那可能只是一个错误触发的动画

【讨论】:

  • 玩家正在跳跃,因为在更新方法中,所有的触摸都被认为是跳跃。我想做一个 If 或其他东西,这样如果我按下按钮,玩家就不会跳跃。谢谢!
【解决方案3】:

检查 EventSystem 是否有任何当前被视为活动的游戏对象。如果是,则在按钮上执行触摸,否则触摸不在按钮上。

使用 UnityEngine.EventSystems 添加;在脚本的顶部。然后修改你的代码,如下所示。

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

【讨论】:

  • 谢谢,但这只是部分工作。我现在使用向上滑动的方法,如果我按下按钮下方,然后我会按下按钮,英雄仍然会跳跃。
  • 什么是screenMinusButton?它是 GUI 按钮还是其他任何东西?你能发布你的跳转代码吗?
猜你喜欢
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
相关资源
最近更新 更多