2017-10-11 105 views
0

我是一個新的統一用戶,我正在嘗試製作一個2D平臺變形器。 我可以控制我的球員,但是我的跳躍有點問題。如何在玩家碰撞地面時停止觸發動畫?

我在動畫製作中使用了觸發器,它可以工作,但是我想在玩家觸摸地面時停止動畫。

最好的辦法是保持最後一跳的幀準備,直到玩家接觸地面,然後停下來。

我有一個collider2D誰在連接到播放器與此代碼gameObjet:

void Start() 
{ 
    Audio = GetComponent<AudioSource>(); 
    Anim = transform.parent.GetComponent<Animator>(); 
} 

void OnTriggerEnter2D (Collider2D col) 
{ 
    if (col.gameObject.tag == "Sol" || col.gameObject.tag == "Plateforme") 
    { 
     Anim.SetTrigger("stopJump"); 
     transform.parent.GetComponent<playerController>().isGrounded = true; 
     Audio.pitch = 0.7f; 
     Audio.volume = 0.7f; 
     Audio.PlayOneShot(soundGround); 
    } 
} 

我的動畫有'跳「閒置」和運行之間的過渡「stopJump」。這是正確的做法嗎? see my animator here

動畫Jump不想在結束幀之前停止。如果我禁用'有退出時間',跳轉停止太早... 觸發器'stopJump'沒有優先權...

謝謝!

+0

更好,如果你問你的問題在https://gamedev.stackexchange.com/ – CodingYoshi

回答

1

在動畫中你的狀態機,

只需添加一個空閒狀態,這將JUMP狀態轉移到空閒(這將當玩家站在地面上循環,什麼也不做)觸發狀態,然後從OnTriggerEnter2D可以使用Animator.setTrigger(「triggerName」)將狀態轉移到空閒狀態。

正如我們在項目的球員應該成爲很多條件空閒,所以我們只是在這裏trigging backIdel做出了AnyStat轉移到空閒狀態的例子:

enter image description here

+0

感謝您的幫助。仍然有一個問題與它...我更新了我的問題,如果你能再次幫助我...謝謝:) – Etienne

+0

嗨,我想你也許帶我錯了,應該沒有必要做另一個* stopJump *狀態,從跳躍狀態到空閒狀態的觸發就是你所需要的,在我們的項目中,爲了說服我們的目的,我們甚至從**任意狀態**到空閒觸發了一個觸發器,這將允許我們以前的狀態轉換到空閒狀態。 – armnotstrong

+0

謝謝!有用!這是如此簡單....>< 感謝您的幫助! – Etienne

相關問題