我已经将跳跃动画添加到我的播放器中。当我的播放器跳跃时,动画播放。但是当播放器着陆时,跳跃动画卡住了。当我检查动画选项卡时,跳跃动画只是循环播放。
这是代码的跳跃的东西-动画/实际运动:
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);
}
1条答案
按热度按时间gywdnpxw1#
这句话不是你所想的那样
GetButtonUp
在按钮被释放的第一帧返回true(参见docs)。但是如果按钮已经被释放,它将再次返回false
。这在文档中没有明确说明。或者换句话说:GetButtonUp
在按钮已被释放的帧中返回true
,但在按钮仍被按下之前的帧中返回true
。你可以检测到玩家落地的瞬间来切换动画: