【问题标题】:Unity character goes flying团结角色飞起来
【发布时间】:2018-02-25 17:03:42
【问题描述】:

所以我现在正在研究我的角色的跳跃,我已经按照我的意愿进行跳跃,除了它不检查地面。我可以轻松地创建一个在与标记为地面的对象发生碰撞时变为真假的布尔值,但我想使用“字符控制器”组件来实现,因为我想将它用于其他功能。

但是当我添加角色控制器时,我第二次移动我的玩家,他以大约 100000 公里/小时的速度飞行......

如何避免这种情况?有人可以修复我的脚本,并解释为什么会发生这种情况的思考过程吗?

跳过我的脚本的一部分:

void update () {
    if (rb.velocity.y < 0) {
        rb.velocity += Vector3.up * Physics.gravity.y * (fallMultiplier - 1) * Time.deltaTime;
    } else if (rb.velocity.y > 0 && !Input.GetButton ("Jump")) {
        rb.velocity += Vector3.up * Physics.gravity.y * (lowJumpMultiplier - 1) * Time.deltaTime;
    }

    //Hoppe funktionen
    if (Input.GetButtonDown("Jump")) {
        GetComponent<Rigidbody> ().velocity = Vector3.up * jumpForce;
        //Debug til hop
        //Debug.Log("Surface is jumpable");
    }
}

我也非常希望我的角色能在空中保持动量,这样我在空中时就不能轻易转身,而是继续朝着我跳跃的方向移动。

【问题讨论】:

  • update 应该是 Update。可能是你这边的错字......
  • @Programmer 这只是我在stackoverflow上发布时的一个错字,而不是脚本本身:-)
  • 好的。我不确定。始终尝试复制和发布您的代码,否则您将使用不同的脚本来显示与您的实际问题无关的另一个或不相关的问题。你有什么问题?你想用 Character Controller 跳跃吗?
  • 我想稍后添加跳墙功能,为此我想使用一种使用角色控制器的方法。但是当我现在添加角色控制器时,我的玩家会飞起来,我不知道为什么......

标签: c# unity3d


【解决方案1】:

根据你所说的,我假设你显示的代码是有效的,而添加字符控制器脚本是什么错误?

“飞行”错误很常见,可能涉及很多方面。检查以下内容:

  1. 多个非触发器的物理碰撞器
  2. 多个刚体(在您的代码中,您似乎引用了两个不同的可能 - 变量 rb 和 GetComponent)
  3. 每帧更新力 - 有时这是一个偷偷摸摸的 IF 语句,由于接收到不正确的数据而导致错误

我可以很容易地创建一个布尔值,在与 一个标记为地面的对象,但我想用“字符 控制器”组件,因为我想将它用于其他 功能。

为什么不在角色控制器本身中执行此操作?

【讨论】:

  • 非常感谢您的回答。我重写了代码,所以我有一些我想要的运动功能。不幸的是,我对该代码有一个新问题。也许你能帮我那里? stackoverflow.com/questions/48989033/…
猜你喜欢
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
  • 2018-11-01
  • 2020-03-17
  • 2023-01-25
相关资源
最近更新 更多