2014-01-22 69 views
0

我試圖發展Unity3D引擎遊戲。我的遊戲有主角,它有一個2D動畫的精靈。但環境是3D的。實際上,你可以看到它在這裏:雪碧對開回應後在統一

http://www.youtube.com/watch?v=jhT_PniyySY

的問題是出現在視頻中也,當你移動左,右轉(或其他方式)的動畫突然改變,沒有任何問題。但是,當您向左移動並向上或向下移動時,動畫更改的響應時間較晚。我認爲這可能是因爲它等待動畫完成,但爲什麼它不會發生在左右運動呢?

我的朋友建議我使用動畫過渡面板上的權利,因爲他也懷疑它等待,直到動畫結束,但我甚至沒有行走和不同方向運行的動畫之間的過渡。

我懷疑我面對的布爾值不正常工作,所以在這裏我如何設置它:

void Movement() 
{ 
anim.SetFloat("horizontalspeed", Input.GetAxis ("Horizontal")); 
anim.SetFloat("verticalspeed", Input.GetAxis ("Vertical")); 

if(Input.GetKey(KeyCode.D)) 
{ 
if(anim.GetBool ("facingRight") != true) 
{ 
anim.SetBool ("facingRight", true); 
} 
else 
{ 
anim.SetBool ("facingRight", false); 
} 
} 
if(Input.GetKey(KeyCode.A)) 
{ 
if(anim.GetBool ("facingLeft") != true) 
{ 
anim.SetBool ("facingLeft", true); 
} 
else 
{ 
anim.SetBool ("facingLeft", false); 
} 
} 
if(Input.GetKey(KeyCode.W)) 
{ 
if(anim.GetBool ("facingUp") != true) 
{ 
anim.SetBool ("facingUp", true); 
} 
else 
{ 
anim.SetBool ("facingUp", false); 
} 
} 
if(Input.GetKey(KeyCode.S)) 
{ 
if(anim.GetBool ("facingDown") != true) 
{ 
anim.SetBool ("facingDown", true); 
} 
else 
{ 
anim.SetBool ("facingDown", false); 
} 
} 
else 
{ 
anim.SetBool ("facingRight", true); 
anim.SetBool ("facingLeft", true); 
anim.SetBool ("facingUp", true); 
anim.SetBool ("facingDown", true); 
} 
} 

請幫我noobish問題。我非常感謝。

回答

0

如果您按下(對角線),你可以用2個狀態真的結束了這兩個鍵。 (例如,向上和左) 看起來你可能能夠得到所有4個方向的正確,如果一次過保存所有鑰匙!因此,根據你選擇動畫的方式,它可能會停留在錯誤的動畫上。

例如如果你持有左和右......它可能優先考慮剩下的。

希望你更新你的運動每一場比賽更新。 (儘可能快)

+0

通過這段代碼,也沒關係,我去哪個方向,它總是選擇動畫,我按下了第一個方向。當我站起來然後離開時,角色會變得越來越大,動畫就會上升。當我左手再擡起時,角色再次向右移動,但動畫向左移動。一次按住兩個或三個按鈕幾乎沒有問題。我的問題是,遊戲在下一個動畫之前會播放一個動畫0.5。它只發生在對角線變化中。即使我單獨按下按鈕。 btw移動功能在Update yes中被調用。 – AnilDemir