所以基本上,我正在使用 c# 統一創建一個漫游的 ai 角色,并且漫游一切正常,但是當某些影片應該播放時,它們卻沒有。我將包括我用來實作這一點的代碼。我還在模型上使用了影片組件,影片都正確命名并與影片師名稱中的影片對齊,影片來自 mixamo。非常感謝任何幫助,因為我完全被困住了!
void Update()
{
if (isWandering == false)
{
StartCoroutine(Wander());
}
if (isRotatingRight == true)
{
gameObject.GetComponent<Animator>().Play("idle");
transform.Rotate(transform.up * Time.deltaTime * rotSpeed);
}
if (isRotatingLeft == true)
{
gameObject.GetComponent<Animator>().Play("idle");
transform.Rotate(transform.up * Time.deltaTime * -rotSpeed);
}
if (isWalking == true)
{
gameObject.GetComponent<Animator>().Play("waalk");
transform.position = transform.forward * moveSpeed * Time.deltaTime;
}
}
uj5u.com熱心網友回復:
真正考慮使用Animator引數和轉場,以后會省很多麻煩。
無論如何,關于這個問題:您的代碼在 中Update,這意味著它運行每一幀。
這意味著您告訴 Animator 播放具有該名稱的狀態的每一幀,因此每一幀它都會重新開始該狀態的影片。結果將是您的物件將卡在任何影片的第一幀上。
相反,Play當所需的條件發生變化時,您應該只呼叫一次。
順便說一句,這是使用 Animator 引數更方便的一個例子,因為通過轉換,您正在查詢將影片師從一種狀態帶到另一種狀態的特定條件,因此您將免費獲得這種“僅運行一次”行為.
uj5u.com熱心網友回復:
抱歉,我找到了答案,我正在對一個沒有被操縱的模型做任何事情?? 現在一切都很好,感謝您的幫助 :)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/385937.html
上一篇:我可以僅根據名稱移動游戲物件嗎?
