protected override void AIUpdate_fly_detect() { base.AIUpdate_fly_detect(); float rand = GetAIRandomNumver(); switch (aiState) { case AISTATE.AISELECT: if (rand < AddAIProbNum(aiStateFly_flyEnd * ChengeModeRate)) { FlyMode_end(); } else if (rand < AddAIProbNum(aiStateFly_approch)) { SetAIState(AISTATE.APPROACH_DASH, 5.0f); } else if (rand < AddAIProbNum(aiStateFly_escape)) { SetAIState(AISTATE.ESCAPE_DASH, 3.0f); } else if (rand < AddAIProbNum(aiStateFly_attack)) { SetAIState(AISTATE.ATTACK, 20.0f); } break; case AISTATE.APPROACH_DASH: if (EnemyCtrl_fly.MoveToPlayer_X(10.0f, moveSpeed)) { SetAIState(AISTATE.ATTACK, 20.0f); } break; case AISTATE.ESCAPE_DASH: if (nowTargetPos == null) { if (EnemyCtrl_fly.GetDistancePlayer_X() > 40.0f) { SetAIState(AISTATE.APPROACH_DASH, 5.0f); return; } EnemyCtrl_fly.SetDirectionToPl(); nowTargetPos = EnemyCtrl_fly.GetPostionFromPl_NearMe(40.0f); } if (EnemyCtrl_fly.MoveToTarget_X_reverse(1.0f, (Vector2)nowTargetPos, moveSpeed * 0.8f)) { nowTargetPos = null; SetAIState(AISTATE.ATTACK, 20.0f); } break; case AISTATE.WAIT: break; } }
protected override void AIUpdate_fly_attack() { base.AIUpdate_fly_attack(); float rand = GetAIRandomNumver(); if (rand < AddAIProbNum(aiStateFlyAt_dive)) { EnemyCtrl_fly.SetDirectionToPl(); animator.SetTrigger("At_dive"); StartAttack(); } else if (rand < AddAIProbNum(aiStateFlyAt_fire)) { if (EnemyCtrl_fly.GetDistancePlayer_X() < 10.0f) { return; } EnemyCtrl_fly.SetDirectionToPl(); animator.SetTrigger("At_fire_sky"); StartAttack(); } }
protected override void AIUpdate_attack() { base.AIUpdate_attack(); float rand = GetAIRandomNumver(); if (rand < AddAIProbNum(aiStateFrontPl_dash)) { EnemyCtrl_fly.SetDirectionToPl(); animator.SetTrigger("At_dash"); StartAttack(); } else if (rand < AddAIProbNum(aiStateFrontPl_head)) { if (EnemyCtrl_fly.IsPlayerFront()) { animator.SetTrigger("At_head"); StartAttack(); } } else if (rand < AddAIProbNum(aiStateFrontPl_tail)) { if (!EnemyCtrl_fly.IsPlayerFront()) { animator.SetTrigger("At_tail"); StartAttack(); } } else if (rand < AddAIProbNum(aiStateFrontPl_fire)) { if (EnemyCtrl_fly.IsPlayerFront()) { animator.SetTrigger("At_fire"); StartAttack(); } } }