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

时间:2015-07-12 12:58:00

标签: c# animation unity3d unity3d-2dtools

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为真时执行跳转,因此空闲动画触发器将在跳转动画同时启动很少或根本没有跳跃动画。

你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

也许你有一个地板游戏对象,当跌倒时跳跃角色会碰撞?所以使用OnCollisionEnter应该有用。

答案 1 :(得分:0)

我通过将跳跃动画划分为跳跃过渡到下降来解决这个问题。动画根据y轴移动是正还是负来切换到这些状态。