private void Start() { Main_SM = this; Boss = this.GetComponent <Tank_Boss>(); player = FindObjectOfType <Temp_Player>(); Idle = new Tank_State_Idle(Main_SM, Boss, "Idle", Boss.TimeBetweenAttacks_1); Prepare = new Tank_State_Prepare(Main_SM, Boss, "Prepare", Boss.TimeBeforeDriveLaunch); DriveBy = new Tank_State_DriveBy(Main_SM, Boss, "DriveBy", 0); DriveOff = new Tank_State_DriveOff(Main_SM, Boss, "DriveOff", 0); DriveIn = new Tank_State_DriveIn(Main_SM, Boss, "DriveIn", 0); DriveCombo = new Tank_State_DriveCombo(Main_SM, Boss, "DriveCombo", Boss.DriveComboWaitDuration); Reposition = new Tank_State_Reposition(Main_SM, Boss, "Reposition", Boss.ReposDuration, Boss.ReposPrepDuration); AttackJumpSingle = new Tank_State_AttackJump(Main_SM, Boss, "AttackJump_1", Boss.JumpPrepDuration_S, Boss.JumpDuration_S, Boss.JumpHitDuration_S, Boss.JumpReturnDuration, 1); AttackJumpTriple = new Tank_State_AttackJump(Main_SM, Boss, "AttackJump_3", Boss.JumpPrepDuration_M, Boss.JumpDuration_M, Boss.JumpHitDuration_M, Boss.JumpReturnDuration, 3); ShootGunSingle = new Tank_State_ShootGun(Main_SM, Boss, "ShootGun_1", Boss.GunPrepDuration_S, Boss.GunHitDuration_S, Boss.GunRetDuration_S, 1); ShootGunTriple = new Tank_State_ShootGun(Main_SM, Boss, "ShootGun_3", Boss.GunPrepDuration_M, Boss.GunHitDuration_M, Boss.GunRetDuration_M, 3); ShootMortar_1 = new Tank_State_ShootMortar(Main_SM, Boss, "Mortar_1", Boss.MortarPrepDuration, Boss.MortarTimeBtwnShot, Boss.MortarRetDuration, 1); ShootMortar_2 = new Tank_State_ShootMortar(Main_SM, Boss, "Mortar_2", Boss.MortarPrepDuration, Boss.MortarTimeBtwnShot, Boss.MortarRetDuration, 2); ShootOil_1 = new Tank_State_ShootOil(Main_SM, Boss, "Oil_1", Boss.OilPrepDur, Boss.OilHitDuration, Boss.OilRetDur, 1); ShootOil_2 = new Tank_State_ShootOil(Main_SM, Boss, "Oil_2", Boss.OilPrepDur, Boss.OilHitDuration, Boss.OilRetDur, 2); Stunned = new Tank_State_Stunned(Main_SM, Boss, "Stunned", Boss.StunDuration); Dead = new Tank_State_Dead(Main_SM, Boss, "Dead", 0); //MoveList_1 = new Tank_State[] { ShootMortar_1 }; MoveList_1 = new Tank_State[] { DriveBy, AttackJumpSingle, AttackJumpSingle, ShootMortar_1, ShootOil_1, Reposition }; MoveList_2 = new Tank_State[] { DriveBy, AttackJumpTriple, AttackJumpTriple, ShootMortar_2, ShootMortar_2, ShootOil_1, ShootOil_2, Reposition }; attackStateList = new Tank_State[] { AttackJumpTriple }; //attackStateList = new Tank_State[] { ShootGunTriple, ShootGunSingle, DriveBy, AttackJumpSingle, AttackJumpTriple, Reposition }; ChangeState(Idle); }
public float nextfire = 0.0f;//다음 총알 발사시간 void Start() { session_ = protobuf_session.getInstance(); state = gameObject.GetComponentInParent <Direct_Tank_State>(); //최초에 MuzzleFlash MeshRenderer를 비활성화 muzzleFlash_1.enabled = false; }
public override void Enter() { //Boss.sp.color = Color.yellow; t = 0; AttackToPerform = GetNextState(); DetermineAction(); }
public void ChangeState(Tank_State newState) { if (currentState != null) { currentState.Leave(); } currentState = newState; currentState.Enter(); }
IEnumerator Combo(Tank_State[] attacks) { comboStep = 0; comboLength = attacks.Length; comboActive = true; foreach (Tank_State state in attacks) { Tank_State S = attacks[comboStep]; ChangeState(Prepare); yield return(new WaitForSeconds(S.GetPrepDuration())); ChangeState(S); yield return(new WaitForSeconds(S.GetDuration())); float returnDur = S.GetReturnDuration(); // combo state yield return(new WaitForSeconds(returnDur)); comboStep++; } ChangeState(Idle); comboActive = false; }