Unity3D -如何检测一个角色是否在跳跃后着陆

本文关键字:是否 角色 跳跃 一个 何检测 Unity3D 检测 | 更新日期: 2023-09-27 18:02:29

在我的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为真时执行的,所以空闲动画触发器将在跳跃动画同时启动,给出很少或根本没有跳跃动画。

你能帮我一下吗?

Unity3D -如何检测一个角色是否在跳跃后着陆

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

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