private IEnumerator CharaActionWait(GameObject attackedChara, Command command)//行動選択をAttack,Heal,Waitに渡し,処理を待つ { Debug.Log("CharaActionWait"); if ((int)command == 1) { activeCharaStatus.Attack(attackedChara); //選択している味方キャラ(activeChara)の攻撃関数を呼び出し,引数として敵キャラ(attackedChara)を渡している yield return(new WaitForSeconds(animationTime)); if (attackedChara.tag == "bomb") { attackedChara.GetComponent <BomStatus>().BombAttack(); GameObject[] enemyBomb = GameObject.FindGameObjectsWithTag("enemy"); for (int i = 0; i < enemyBomb.Length; i++) { activeCharaStatus.CharaDestroy(enemyBomb[i]); } } else { activeCharaStatus.CharaDestroy(attackedChara); activeCharaStatus.CharaExperience(); } yield return(null); GameJudge(); if (attackedChara != null) { int[] attackedCharaPos = new int[2]; if (attackedCharaStatus == null) { Debug.Log("attackedCharaStatus = null"); } attackedCharaPos[0] = attackedCharaStatus.posX; attackedCharaPos[1] = attackedCharaStatus.posY; if (Mathf.Abs(attackedCharaPos[0] - activeCharaPos[0]) + Mathf.Abs(attackedCharaPos[1] - activeCharaPos[1]) <= attackedCharaStatus.attackDistance) { //↑攻撃したキャラと攻撃されたキャラの距離が攻撃されたキャラの攻撃範囲内であれば反撃 Debug.Log("反撃発生"); attackedCharaStatus.Attack(activeChara); //敵の反撃:先ほどとは逆に味方キャラ(attackedChara)を引数として渡し,敵キャラの攻撃関数を呼び出している。 attackedCharaStatus.AfterMoving(true); //actionFlagの変更とカラー変更を同じ関数でまとめて↑で呼ぶ yield return(new WaitForSeconds(animationTime)); attackedCharaStatus.CharaDestroy(activeChara); GameJudge(); } } activeCharaStatus.LevelUp(); //if (onMouseObject.tag == "bomb")//攻撃した相手が火薬だった時 //{ // onMouseObject.GetComponent<BomStatus>().BomAttack(); // yield return new WaitForSeconds(animationTime); // activeCharaStatus.CharaDestroy(attackedChara); //} } if ((int)command == 2) { activeCharaStatus.Heal(attackedChara);//選択している味方キャラ(onMouseObject)の回復関数を呼び出し yield return(new WaitForSeconds(animationTime)); } if ((int)command == 3) { //キャラを移動後の座標に確定させるスクリプトを記述する必要あり activeCharaStatus.CharaWait(); } yield return(null); IEnumerator coroutine = EncampmentChange(); StartCoroutine(coroutine); yield break; }//完成