在我Update()
功能我:Unity3D - 如何檢測一個角色是否已經跳躍後落地
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
爲真時執行跳轉,所以Idle動畫觸發器將與跳動動畫同時啓動,同時根本不提供任何跳動動畫。
你能幫我解決嗎?
即使我的角色在跳躍前站在地面上,此檢查是否會啓動?如果是,那麼它將不起作用。 –
好的,你可以使用枚舉來管理這些狀態嗎? steaystate,步態,跳躍狀態等?如果發生跳躍和碰撞,所需條件滿足? – NeverHopeless
我實際上已經解決了這個問題,將跳躍動畫分成跳躍,然後下降。動畫根據y軸速度切換到這些狀態。謝謝你的幫助。 –