团结角色飞翔

时间:2018-02-25 17:03:43

标签: c# unity3d

所以我现在正在努力跳跃我的角色,我已经按照我想要的方式进行了跳跃工作,除了它没有检查地面。我可以轻松地制作一个与物体标记的地面碰撞时真实和虚假的布尔,但我想用"字符控制器"组件,因为我想将它用于其他功能。

但是当我添加角色控制器时,第二个我移动我的玩家,他以大约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");
    }
}

另外我真的很想如果我的角色会保持空气中的动力,所以我在空中时不能轻易转动,而是继续向我跳跃的方向移动。

1 个答案:

答案 0 :(得分:0)

根据你的说法,我假设您正在显示的代码是工作代码,而字符控制器脚本的添加是错误的吗?

飞行&#39; bug很常见,可以是很多东西。检查以下内容:

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

    我可以很轻松地制作一个真实的布尔,并且在碰撞时是假的   一个对象标记的地面,但我想用&#34;字符做   控制器&#34;组件,因为我想用它来做其他的   特征

    为什么不在Character Controller本身中执行此操作?