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
为真时执行的,所以空闲动画触发器将在跳跃动画同时启动,给出很少或根本没有跳跃动画。
你能帮我一下吗?
也许你有一个地板游戏对象,跳跃的角色在坠落时发生碰撞?所以使用OnCollisionEnter
应该可以。
我已经解决了这个问题,将跳跃动画划分为跳跃过渡到下落。动画根据y轴的正或负移动切换到这些状态。