【问题标题】:Unity Rigidbody is sliding after jumpingunity Rigidbody 跳跃后滑动
【发布时间】:2020-01-24 22:03:39
【问题描述】:

我希望我的角色斜向跳跃,但当它落地时会滑动。

private void Update()
{
    if (Input.GetMouseButtonUp(0) && isGrounded())
    {
        //jump 
        timeHeld = 0;
        Debug.Log("MouseButtonUp = true");
        rb.AddForce(jumpDirection, ForceMode2D.Impulse);
    }
    else if (isGrounded())
    {
        rb.velocity = Vector2.zero;
    }
}

这段代码在某种程度上可以工作,但是当玩家落地时它会出现故障。我需要用一些力来让他脱离 isGrounded() ,否则他只会得到一些像素然后立即再次被推倒。 这是我的 isGrounded() 函数

private bool isGrounded()
{
    RaycastHit2D raycastHit = Physics2D.BoxCast(boxCollider2d.bounds.center, boxCollider2d.bounds.size, 0f, Vector2.down, 0.1f, platformLayerMask);
    return raycastHit.collider != null;
}

问题显然是我在 Boxcast() 中的距离为 0.1f。任何想法如何解决这个问题?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    无需自己检查地面。

    1. 添加一个名为 OnCollisionEnter 的统一事件
    2. 在里面,检查对撞机是否是地面
    3. 如果为真,则速度 = 零

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      相关资源
      最近更新 更多