Unityでコンボ攻撃を作ってみた

今回はUnityでコンボ攻撃を作ってみました。

```c#:PlayerController.cs
    [SerializeField] bool combo1enable;
    [SerializeField] bool combo2enable;
    [SerializeField] bool combocombo = true;
    [SerializeField] bool cancombo = false;
    [SerializeField] float combo1time;
    [SerializeField] float combo2time;
    [SerializeField] float combo3time;
 void Start () {
        animator = GetComponent<Animator>();
      
    }

    // Update is called once per frame
    void Update()  {
  if (Input.GetButtonDown("Attack") && !cancombo && !combo1enable && !combo2enable)
        { cancombo = true; }



        if (  cancombo && !combo1enable && combocombo)
        {
            //入力したら一定期間入力を受け付け、入力があったらコンボ２へ移行、なかったらキャンセル
            //コンボ１
            animator.SetBool("combo1",true);
            Debug.Log("コンボ１");
            
           combo1time += Time.deltaTime;
            if (combo1time > 0.1 && combo1time < 1) {
                //入力受付期間
                if (Input.GetButtonDown("Attack")) {
                    combo1time = 0;

                    combo1enable = false ;
                    combo1enable = true;
                    combocombo = false;
                    //タイマーを初期化し、コンボ１をオフにして、コンボ２をTrueにする
                }
                 }
            if (combo1time > 1) {
                //入力されなかったときの処理
                StartCoroutine("cancombocorutine");
                //StartCoroutine("cancomboenable");
                 }
        }

        if(combo1enable)
        {
            Debug.Log("コンボ２");
            //コンボ２
            animator.SetBool("combo2", true);
           

            
            combo2time += Time.deltaTime;
            if (combo2time < 1 && combo2time > 0.1)
            {
                if (Input.GetButtonDown("Attack"))
                {
                    combo2time = 0;
                    combo2enable = true;
                    combo1enable = false;
                }
            }
                if(combo2time > 1)
                {
                    combo1enable = false;
                    StartCoroutine("cancombocorutine");
                   
                }
            
        }

        if (combo2enable)
        {
            Debug.Log("コンボ３");
            //コンボ３
            animator.SetBool("combo3", true);
            combo3time += Time.deltaTime;
            if (combo3time > 1)
            {
                StartCoroutine("cancombocorutine");
                combo2enable = false;
            }
        }
    }

    IEnumerator cancombocorutine()
    {
        
        Debug.Log("こーるちん");
        cancombo = false;
        combocombo = false;
        combo1enable = false;
        combo2enable = false;
        AttackReset();
        yield return new WaitForSeconds(0.5f);
        combocombo = true;
    }

    void AttackReset()
    {
        animator.SetBool("combo1", false);
        animator.SetBool("combo2", false);
        animator.SetBool("combo3", false);
        combo1time = 0;
        combo2time = 0;
        combo3time = 0;
    }
}


```

ググってもいい感じのが見当たらなくて、うんうん考えながら書いてました。
色々名前がクソなのは目をつぶってほしいです。

もっとこう、パパっと実装できちゃうような書き方とかあったら教えてほしい...
終わりです。

https://twitter.com/Y_amagisi/status/1051965139581263872

こんな感じで動きます