2015-07-12 1596 views
1

在我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動畫觸發器將與跳動動畫同時啓動,同時根本不提供任何跳動動畫。

你能幫我解決嗎?

回答

0

我已經解決了這個問題,將跳躍動畫劃分爲跳轉到下降跳轉。動畫根據y軸運動是正還是負來切換到這些狀態。

0

也許你有一個樓層gameobject與跳躍角色相撞時墜落?所以使用OnCollisionEnter應該可以工作。

+0

即使我的角色在跳躍前站在地面上,此檢查是否會啓動?如果是,那麼它將不起作用。 –

+0

好的,你可以使用枚舉來管理這些狀態嗎? steaystate,步態,跳躍狀態等?如果發生跳躍和碰撞,所需條件滿足? – NeverHopeless

+0

我實際上已經解決了這個問題,將跳躍動畫分成跳躍,然後下降。動畫根據y軸速度切換到這些狀態。謝謝你的幫助。 –

相關問題