Unity3D - 如何检测角色跳跃后是否落地

Unity3D - How to detect whether a character has landed after a jump

在我的 Update() 函数中我有:

isGrounded = Physics2D.Linecast (transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));

if (Input.GetButtonDown ("Jump") && isGrounded) {
    jump = true;
}

我使用 FixedUpdate() 中的代码让角色跳跃:

if (jump) {
    anim.SetTrigger("Jump");
    rb.AddForce(new Vector2 (0f, jumpForce));
    jump = false;
}

我必须检测我的角色落地的时刻(isGrounded 将变为真)以将动画切换回空闲状态。我无法使用 isGrounded 来检测它,因为正如您所见,当 isGrounded 为真时执行跳跃,因此空闲动画触发器将与跳跃动画同时启动,给出很少或完全没有跳跃动画。

你能帮我解决这个问题吗?

也许你有一个地板游戏对象,跳跃的角色在跌倒时会与之发生碰撞?所以使用 OnCollisionEnter 应该可以。

我已经解决了这个问题,方法是将跳跃动画分解为过渡为下落的跳跃。动画根据 y 轴移动是正向还是负向切换到这些状态。