public override void execute() { BasicAction basic_action = this.behavior.basic_action; // ---------------------------------------------------------------- // // 다음 상태로 이행할지 체크한다. switch (this.step.do_transition()) { // 대기 중. case STEP.READY: { /*do { * * if(!LevelControl.get().canCreateCurrentRoomEnemy()) { * * break; * } * * if(!Input.GetMouseButtonDown(1)) { * //if(!this.step.is_acrossing_cycle(5.0f)) { * * break; * } * * this.step.set_next(STEP.SPAWN); * * } while(false);*/ } break; // 적 스폰. case STEP.SPAWN: { // 스폰 애니메이션이 끝나면 대기 상태로 돌아간다. do { // 애니메이션 전환 중이면 돌아가지 않는다. // (이걸 넣어두지 않으면 "idle" -> "generate"의. // 전환 중에 다음 if문이 true가 되어 버린다). if (basic_action.animator.IsInTransition(0)) { break; } if (basic_action.animator.GetCurrentAnimatorStateInfo(0).IsName("Base Layer.Generate")) { break; } this.step.set_next(STEP.READY); } while(false); } break; // 찌그러진다. case STEP.PECHANCO: { if (this.is_death_motion_finished) { this.step.set_next_delay(STEP.IDLE, 0.5f); } } break; } // ---------------------------------------------------------------- // // 상태 전환 시 초기화. while (this.step.get_next() != STEP.NONE) { switch (this.step.do_initialize()) { case STEP.IDLE: { // 부모 계층의 액션으로 복귀. if (this.parent != null) { this.parent.resume(); } } break; // 대기 중. case STEP.READY: { } break; // 적 스폰. case STEP.SPAWN: { this.is_trigger_pe = false; basic_action.animator.SetTrigger("Generate"); } break; // 찌그러진다. case STEP.PECHANCO: { basic_action.animator.SetTrigger("Death"); this.is_death_motion_finished = false; this.control.cmdEnableCollision(false); } break; } } // ---------------------------------------------------------------- // // 각 상태에서의 실행 처리. switch (this.step.do_execution(Time.deltaTime)) { // 적 스폰. case STEP.SPAWN: { // 모션 타이밍에 맞춰 적을 토해낸다. if (this.is_trigger_pe) { chrBehaviorEnemy_Lair behave_lair = this.behavior as chrBehaviorEnemy_Lair; if (this.pedigree != "") { behave_lair.create_enemy_internal_pedigree(this.pedigree); this.pedigree = ""; } else { behave_lair.create_enemy_internal(); } this.is_trigger_pe = false; } } break; } // ---------------------------------------------------------------- // }
public override void execute() { BasicAction basic_action = this.behavior.basic_action; // ---------------------------------------------------------------- // // ?ㅼ쓬 ?곹깭濡??댄뻾?좎? 泥댄겕?쒕떎. switch (this.step.do_transition()) { // ?湲?以? case STEP.READY: { /*do { * * if(!LevelControl.get().canCreateCurrentRoomEnemy()) { * * break; * } * * if(!Input.GetMouseButtonDown(1)) { * //if(!this.step.is_acrossing_cycle(5.0f)) { * * break; * } * * this.step.set_next(STEP.SPAWN); * * } while(false);*/ } break; // ???ㅽ룿. case STEP.SPAWN: { // ?ㅽ룿 ?좊땲硫붿씠?섏씠 ?앸굹硫??湲??곹깭濡??뚯븘媛꾨떎. do { // ?좊땲硫붿씠???꾪솚 以묒씠硫??뚯븘媛吏 ?딅뒗?? // (?닿구 ?l뼱?먯? ?딆쑝硫?"idle" -> "generate"?? // ?꾪솚 以묒뿉 ?ㅼ쓬 if臾몄씠 true媛 ?섏뼱 踰꾨┛??. if (basic_action.animator.IsInTransition(0)) { break; } if (basic_action.animator.GetCurrentAnimatorStateInfo(0).IsName("Base Layer.Generate")) { break; } this.step.set_next(STEP.READY); } while(false); } break; // 李뚭렇?ъ쭊?? case STEP.PECHANCO: { if (this.is_death_motion_finished) { this.step.set_next_delay(STEP.IDLE, 0.5f); } } break; } // ---------------------------------------------------------------- // // ?곹깭 ?꾪솚 ??珥덇린?? while (this.step.get_next() != STEP.NONE) { switch (this.step.do_initialize()) { case STEP.IDLE: { // 遺紐?怨꾩링???≪뀡?쇰줈 蹂듦?. if (this.parent != null) { this.parent.resume(); } } break; // ?湲?以? case STEP.READY: { } break; // ???ㅽ룿. case STEP.SPAWN: { this.is_trigger_pe = false; basic_action.animator.SetTrigger("Generate"); } break; // 李뚭렇?ъ쭊?? case STEP.PECHANCO: { basic_action.animator.SetTrigger("Death"); this.is_death_motion_finished = false; this.control.cmdEnableCollision(false); } break; } } // ---------------------------------------------------------------- // // 媛??곹깭?먯꽌???ㅽ뻾 泥섎━. switch (this.step.do_execution(Time.deltaTime)) { // ???ㅽ룿. case STEP.SPAWN: { // 紐⑥뀡 ??대컢??留욎떠 ?곸쓣 ?좏빐?몃떎. if (this.is_trigger_pe) { chrBehaviorEnemy_Lair behave_lair = this.behavior as chrBehaviorEnemy_Lair; if (this.pedigree != "") { behave_lair.create_enemy_internal_pedigree(this.pedigree); this.pedigree = ""; } else { behave_lair.create_enemy_internal(); } this.is_trigger_pe = false; } } break; } // ---------------------------------------------------------------- // }