2017-02-25 6 views
0

私のコードに何か問題があります。割り当てられたキーコード "Z"を押すと、CurrentStateは1に変化せず、コンボ全体で進行します。私はdebug.logを入れようとしましたが、ボックスコライダーがZを押すと有効になりますが、その数は1だけ増えません。誰も助けてくれますか?ここにコードがあります。UNITY - 攻撃ヒットコンボコードエラー。助けが必要

パブリッククラスファイター:MonoBehaviour {

public Collider[] attackhitboxes; 
public Animator art; 
public int CurrentState = 0; 
bool activateTimertoreset = false; 
public float currentcombotimer; 
float origTimer = 50f; 
private void Start() 
{ 
    art = gameObject.GetComponent<Animator>(); 
    origTimer = currentcombotimer; 
} 
void Update() 
{ 
    art.SetInteger("currentstate", CurrentState); 
    NewComboSystem(); 
    ResetComboState(activateTimertoreset); 

} 

void ResetComboState(bool resettimer) 
{ 
    if(resettimer) 
    { 
     currentcombotimer -= Time.deltaTime; 

     if(currentcombotimer <= 0) 
     { 
      CurrentState = 0; 
      activateTimertoreset = false; 
      currentcombotimer = origTimer; 
     } 
    } 
} 
    private void LaunchAttack(Collider col) 
{ 
    Collider[] cols = Physics.OverlapBox(col.bounds.center, col.bounds.extents, col.transform.rotation, LayerMask.GetMask("Hitbox")); 
    foreach(Collider c in cols) 
    { 
     if(c.transform.parent.parent == transform) 
     { 
      continue; 
     } 
    } 
} 

void NewComboSystem() 
{ 
    if (Input.GetKeyDown(KeyCode.Z)) 
    { 
     activateTimertoreset = true; 
     CurrentState++; 
     if (CurrentState == 1) 
     { 
      LaunchAttack(attackhitboxes[0]); 
     } 

     if (CurrentState == 2) 
     { 
      LaunchAttack(attackhitboxes[0]); 
     } 

     if (CurrentState >= 3) 
     { 
      LaunchAttack(attackhitboxes[0]); 
     } 
    } 
} 

}

答えて

0

(input.keydown)場合は、更新機能であなたを入れてみてください、それはあなたの攻撃を呼び出しています。あなたが持っている方法では、更新がすべてのフレームで実行されるため、あなたの攻撃機能を何度も呼び出すと考えています。また、currentstateの値をデバッグしてみてください。

編集: currentcombotimerは公開されているのでエディタに値を割り当てていますか?スクリプトには開始値はありません。開始機能では、それをorigTimerに割り当てます。この値がゼロの場合、コンボ時間はゼロになります。

+0

これは、 'Input.GetKeyDown'が' NewComboSystem() '関数にあり、' Update() '関数から100%呼び出されているので、**問題ありません。 – Programmer

+0

それは問題のようには思われません。私はまだ先に進み、試しましたが、うまくいかなかったのです。私のコードに何が間違っているか他の提案? –

+0

currentcombotimerは公開されているのでエディタに値を割り当てていますか?スクリプトには開始値はありません。開始機能では、それをorigTimerに割り当てます。この値がゼロの場合、コンボ時間はゼロになります。 – Colby

関連する問題