2015-11-21 46 views
1

例如:如何使用腳本在unity5中觸發相同的動畫器狀態?

在動畫師有兩種狀態:空閒,攻擊。

在動畫過渡設置:

默認 - >空閒

攻擊(有1退出時間) - >空閒

目標:

我想打攻擊動畫,每當鼠標點擊。

問題:

使用animator.Play("attack");將成功觸發攻擊狀態,但是當我一見​​如故的鼠標,如果在攻擊狀態的動畫還沒有完成,它不會被再次觸發。

我搜索了一段時間,才發現這一點: http://answers.unity3d.com/questions/787605/mecanim-equvalent-of-animationstop.html

如何解決這個問題?謝謝!

回答

0

一個想法來解決這個事情是調用播放( 「空閒」)在播放之前(「攻擊」)。國家將進入閒置狀態,然後立即轉入攻擊。但是,下面的一段代碼不起作用

public void PlayAttackAnimation() 
{ 
    animator.Play("idle"); 
    animator.Play("attack"); 
} 

我已經努力使其工作如下。

bool playAttack = false; 

public void PlayAttackAnimation() 
{ 
    animator.Play("idle"); 
    attackAnimFlag = true; 
} 

void LateUpdate() 
{ 
    if (attackAnimFlag) 
    { 
     attackAnimaFlag = false; 
     animator.Play("attack"); 
    } 
} 

這適用於Unity 5.2.2f1,但感覺有點破解。

提示:它只適用於LateUpdate(),如果將第二部分更改爲Update(),則它不起作用。我不知道爲什麼,猜測Unity必須做一些與Update()和LateUpdate()之間動畫變化相關的事情。

0

你在動畫師的東西中有任何狀態,我想你可以將你的攻擊狀態附加到那裏。添加一個布爾參數,並從「任何狀態」到您的攻擊狀態。你可以在代碼中設置布爾值。不要忘記還要退出閒置。 所以它應該是這樣的:

任何狀態 - >攻擊 - >空閒< - 默認

或類似的

More on the any state.

+0

謝謝!這是我首先使用的方式。有兩個理由不使用它。 1我假設如果有一個布爾參數,引擎會不斷檢查它,這感覺像是浪費。你必須想出一種方法來將bool參數恢復爲false,例如使用事件關鍵幀,這看起來不夠高雅。 2主要原因是這種方式無法立即達到同樣播放動畫的目的。因爲您需要在轉換設置中將「可以轉換爲自我」設置爲false。否則,在bool設置爲false之前,它總是顯示第一幀。 – ArtS

相關問題