2017-07-13 9 views
-2

Unityに1人のプレイヤーに銃がいくつかあります。私は数字キー(1、2、... 9)を使ってそれらの間を切り替えようとします。私の現在の武器(1)はそのような「ロード」のアニメーションを再生している場合弾丸を1つにまとめるときに武器を切り替えるときにエラーが発生する

nextWeapon = GetNumberInput(); 
if (nextWeapon >= 0 && nextWeapon < weapons.Length) 
{ 
    // i want to do something here to reset the current weapon before Active nextWeapon 
    // (e.x: current weapon is still loading, it needs to be stop loading and be NORMAL) 

    weapons[currWeapon].SetActive(false); 
    weapons[nextWeapon].SetActive(true); 
    currWeapon = nextWeapon; 
} 

を:しかし

loading weapon (1) and press number key to switch to weapon (2)

その後、私は別の武器に切り替えるにはキーを押してくださいここで私がやっているものです(2):

here is weapon (2)

及び武器に切り替える(1)再び、武器はもはや正常ではない:

what i get when i switch to weapon (1) again

私はそれで何ができるのか教えてください。

撮影中または実行中に切り替えると、すべて正常です。

答えて

1

問題は、これらのアニメーション(状態)がガンのデフォルト構造を変更することです。すべてのアニメーションのInspectorwrite defaultのチェックを外すだけです。 enter image description here

2

武器をもう一度戻すと、あなたのアニメーターが壊れているように見えます。武器を切り替えるたびにアニメーターをリセットすることができます。このようなもの:

「WeaponChanged」をトリガーとして定義します。

リンク:AnyState - >アイドル(あるいは、しかし、それはあなたのアニメーターに呼び出された)あなたは武器を切り替えるたび、コードで

をトリガされた「WeaponChanged」:

nextWeapon = GetNumberInput(); 
if (nextWeapon >= 0 && nextWeapon < weapons.Length) 
{ 
    weapons[currWeapon].SetActive(false); 
    weapons[nextWeapon].SetActive(true); 
    currWeapon = nextWeapon; 
    currWeapon.GetComponent<Animator>().SetTrigger("WeaponChanged"); 
} 

私のようなものを願っていますこれはあなたの問題を解決するかもしれません。

+0

ありがとうございます。私たちが武器をリセットしてから無効にする必要があります。しかし、私が見つけた別の問題があります。 'currWeapon.GetComponent ().SetTrigger( "WeaponChanged"); 'は十分な時間がありません。無効にする前に' reset animation'を再生してください。私はそれのための別の解決策を見つけた、私は以下の答えでそれを示した。 –

1

武器を切り替えるたびに再生される武器の展開アニメーションを作成すると、アニメーターがリセットされ、ゲームがより面白くなります。 Max Playのコードとアニメーターの構造がそれに適しています。

関連する問題