// called when the status is first attached to an entity public virtual void OnAttachedToEntity() { // Show status added on target if (showIcon) { showEffectIndicator(); } if (effectiveAtOnce) { bm.AddEvent(this); } }
void MyBattlePhase() { if (!isBattle) { while (true) { // こちらの攻撃 if (0 < myAttackCount) { // 必殺の検証 myAttackState = RandomCheck(myDeathblow) ? Enums.BATTLE.DEATH_BLOW : Enums.BATTLE.NORMAL; // 通常攻撃命中判定 if (myAttackState != Enums.BATTLE.DEATH_BLOW) { myAttackState = RandomCheck(myAccuracy) ? Enums.BATTLE.NORMAL : Enums.BATTLE.MISS; } // 通常攻撃か必殺が発生したら攻撃イベントとして登録する AttackEvent attackEvent = gameObject.AddComponent <AttackEvent>(); attackEvent.phaseManager = this; attackEvent.myUnitObj = playerUnitObj; attackEvent.targetUnitObj = enemyUnitObj; attackEvent.myAttackPower = myAttackPower; attackEvent.myAttackState = myAttackState; attackEvent.targetHPText = textEnemyHP; battleManager.AddEvent(attackEvent); // SEの再生 //audioManager.AttackSE(); myAttackCount--; } // 敵の反撃 if (0 < enemyAttackCount) { // 必殺の検証 enemyAttackState = RandomCheck(enemyDeathblow) ? Enums.BATTLE.DEATH_BLOW : Enums.BATTLE.NORMAL; // 通常攻撃命中判定 if (enemyAttackState != Enums.BATTLE.DEATH_BLOW) { enemyAttackState = RandomCheck(enemyAccuracy) ? Enums.BATTLE.NORMAL : Enums.BATTLE.MISS; } // 通常攻撃か必殺が発生したら攻撃イベントとして登録する AttackEvent attackEvent = gameObject.AddComponent <AttackEvent>(); attackEvent.phaseManager = this; attackEvent.myUnitObj = enemyUnitObj; attackEvent.targetUnitObj = playerUnitObj; attackEvent.myAttackPower = enemyAttackPower; attackEvent.myAttackState = enemyAttackState; attackEvent.targetHPText = textMyHP; battleManager.AddEvent(attackEvent); // SEの再生 //audioManager.AttackSE(); enemyAttackCount--; } // 戦闘イベント登録終了 if (myAttackCount <= 0 && enemyAttackCount <= 0) { break; } } // 敵をこちらに向かせる if (Mathf.Abs(enemyUnitObj.transform.position.x - focusUnitObj.transform.position.x) <= 0f) { if (enemyUnitObj.transform.position.y < focusUnitObj.transform.position.y) { enemyUnitObj.GetComponent <MoveController>().PlayAnim(Enums.MOVE.UP); } else { enemyUnitObj.GetComponent <MoveController>().PlayAnim(Enums.MOVE.DOWN); } } else if (enemyUnitObj.transform.position.x < focusUnitObj.transform.position.x) { enemyUnitObj.GetComponent <MoveController>().PlayAnim(Enums.MOVE.RIGHT); } else { enemyUnitObj.GetComponent <MoveController>().PlayAnim(Enums.MOVE.LEFT); } // バトルの実行 battleManager.StartEvent(); isBattle = true; } else if (!battleManager.isBattle()) { // 攻撃終了処理 isBattle = false; // プレイヤーUnitが生存していれば経験値取得処理を行う if (focusUnitObj) { // 経験値処理が終わるまでフェーズを停止 phase = Enums.PHASE.STOP; // Exp取得処理の開始 expGaugeController.GaugeUpdate(1000, focusUnitObj.GetComponent <UnitInfo>(), () => { phase = Enums.PHASE.RESULT; }); } else { phase = Enums.PHASE.RESULT; } } }