| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using Sirenix.OdinInspector;
- public class Enemy_Leafghost : Enemy
- {
- [Space(30)]
- [Title("ÁŤť¨šÖ")]
- public GameObject lutos; //şÉť¨
- private Animator lutosAni;
- public Transform pos2;
- public Transform shootPos;
- private bool hasUp;
- public LeafGhost_UpDown ud;
- public override void Init()
- {
- base.Init();
- hasUp = false;
- pastAttackTime = attackController.attackInterval;
- lutosAni = lutos.GetComponent<Animator>();
- ani.Play("dive", 0, 0);
- ud.owner = this;
- ud.targetPosition = pos2;
- PolliwogShot ps = attackController.attackMethod_march[0].skill.GetComponent<PolliwogShot>();
- ps.owner = this;
- ps.pos = shootPos;
- }
- public override Vector3 GetMoveDir()
- {
- return Vector3.zero;
- }
- public override void ChangeState(CharacterState newState)
- {
- if (state == newState)
- {
- return;
- }
- switch (state)
- {
- case CharacterState.Attack:
- attackController.isAttackTriggerOn = false;
- attackController.curAttackMethod.attackTrigger.gameObject.SetActive(false);
- pastAttackTime = 0;
- break;
- case CharacterState.Die:
- isDie = false;
- break;
- }
- state = newState;
- switch (newState)
- {
- case CharacterState.Idle:
- if (!hasUp)
- {
- ani.Play("idle2", 0, 0);
- }
- break;
- case CharacterState.Die:
- ani.Play("die", 0, 0);
- isDie = true;
- dieKeepTime = totalDieKeepTime;
- DropSouls();
- break;
- }
- }
- public override void OnState()
- {
- if (state == CharacterState.None)
- {
- return;
- }
- dieKeepTime -= Time.deltaTime;
- pastAttackTime += Time.deltaTime;
- bool isAttack = GetAttack();
- switch (state)
- {
- case CharacterState.Idle:
- if (!hasUp)
- {
- if (isAttack)
- {
- ud.Attack();
- ChangeState(CharacterState.Attack);
- lutosAni.Play("attack", 0, 0);
- hasUp = true;
- }
- }
- else
- {
- if (pastAttackTime >= attackController.attackInterval)
- {
- Attack_march();
- }
- }
- break;
- case CharacterState.Attack:
- attackController.JudgeTriggerOnOff();
- if (attackController.attackTime <= 0)
- {
- isAttack = GetAttack();
- if (isAttack)
- {
- isConAttack = true;
- }
- ChangeState(CharacterState.Idle);
- break;
- }
- break;
- case CharacterState.Die:
- if (dieKeepTime <= 0)
- {
- if (killer != null && killer.GetComponent<Demonic>())
- {
- SoldierType st = killer.GetComponent<Demonic>().soldierType;
- SoldierEXP.expInstance.AddEXP(st, (int)(exp * LevelSelect.EXPRatio + 0.5f));
- }
- if (dieEffect)
- {
- PoolManager.Instantiate(dieEffect, transform.position);
- }
- gameObject.SetActive(false);
- break;
- }
- break;
- case CharacterState.HitStun:
- hitFeedbackSystem.HitStunUpdate();
- break;
- }
- }
- }
|