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 轴移动是正向还是负向切换到这些状态。
在我的 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 轴移动是正向还是负向切换到这些状态。