[英]2D Jumping Animation stuck on loop
我已将跳跃 animation 添加到我的播放器。 当我的播放器跳跃时,animation 开始播放。 然而,当玩家着陆时,跳跃 animation 就会卡住。 当我检查动画师选项卡时,跳跃 animation 正在循环播放。
这是跳跃的代码——动画/实际运动:
void Update()
{
horizontal = Input.GetAxisRaw("Horizontal");
animator.SetFloat("Speed", Mathf.Abs(horizontal));
if (Input.GetButtonDown("Jump") && IsGrounded())
{
rb.velocity = new Vector2(rb.velocity.x, jumpingPower);
jump = true;
animator.SetBool("isJumping", true);
}
if (Input.GetButtonUp("Jump") && rb.velocity.y > 0f)
{
rb.velocity = new Vector2(rb.velocity.x, rb.velocity.y * 0.5f);
}
if (Input.GetButtonUp("Jump") && IsGrounded())
{
animator.SetBool("isJumping", false);
animator.SetBool("isGrounded", true);
jump = false;
}
Flip();
}
这应该检查玩家是否接地:
private bool IsGrounded()
{
return Physics2D.OverlapCircle(groundCheck.position, 0.2f, groundLayer);
}
此声明与您认为的不同
if (Input.GetButtonUp("Jump") && IsGrounded())
GetButtonUp
在释放按钮的第一帧返回 true(请参阅文档)。 但如果按钮已被释放,它将再次返回false
。 这在文档中没有说清楚。 或者换句话说: GetButtonUp
在按钮已被释放但在按钮仍被按下之前的帧中返回true
。
您可以只检测玩家着陆切换动画的时刻:
if (jump && IsGrounded()) { // player just landed
animator.SetBool("isJumping", false);
animator.SetBool("isGrounded", true);
jump = false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.