public override void Hurt(float dmg, bool explosion) { base.Hurt(dmg, explosion); hurtState(); if (dead) { lives--; var p = transform.Find("assTank_body").Find("assTank_pod"); if (lives == 0) { combatZone.EndZone(); p.Find("assTank_turret").gameObject.SetActive(false); p.Find("assTank_turret animate").gameObject.SetActive(true); anim.Play("assTank_DEATH"); this.enabled = false; } else if (lives == 1) { HP = 20; dead = false; p.Find("glassShatter").GetComponent <TriggerDebris>().Break(); p.Find("assTank_turret").Find("assTank_glass3D").gameObject.SetActive(false); p.Find("assTank_turret").Find("assTank_glassBroken").gameObject.SetActive(true); hurtState = Hurt2; } } }
private void ChangeHurtState() { float percent = Hp / maxHp; if (Mathf.Approximately(percent, 1.0f)) { return; } if (percent > 0.8) { hurtState = HurtState.Normal; } else if (percent > 0.5) { hurtState = HurtState.Little; } else if (percent > 0) { hurtState = HurtState.Bad; } else { hurtState = HurtState.Dead; } }
/// <summary> /// 获取状态 /// </summary> /// <param name="AIState"></param> /// <returns></returns> private StateBase GetState(AIStateType AIState) { if (this.m_StateDic.ContainsKey(AIState)) { return(this.m_StateDic[AIState]); } StateBase state; switch (AIState) { case AIStateType.Attack: state = new AttackState(this.m_ActorBev, this.m_ActorAI); break; case AIStateType.Dead: state = new DeadState(this.m_ActorBev, this.m_ActorAI); break; case AIStateType.Hurt: state = new HurtState(this.m_ActorBev, this.m_ActorAI); break; case AIStateType.Idle: state = new IdleState(this.m_ActorBev, this.m_ActorAI); break; default: Debug.Log(AIState.ToString() + " not exsit "); return(null); } this.m_StateDic.Add(AIState, state); return(state); }
protected virtual void Initialize() { RigidbodySelf = GetComponent <Rigidbody2D>(); audioSource = GetComponent <AudioSource>(); animator = GetComponent <Animator>(); TrailRenderer = transform.parent.GetChild(1).GetComponent <TrailRenderer>(); text = GameObjectContainer.Instacne.FindGameObjectComponent <Text>("DamageScore"); canvas = GameObjectContainer.Instacne.FindGameObjectComponent <Transform>("ScoreUI"); skillEffect = GameObjectContainer.Instacne.FindGameObjectComponent <Transform>("Skill"); Damage = damage; State = BehaviorState.AtGround; hurtState = HurtState.Normal; canUseSkill = true; g = RigidbodySelf.gravityScale; yell = Yell(); wink = Wink(); pettyAction = PettyAction(); TrailRenderer.emitting = false; TrailRenderer.transform.position = RigidbodySelf.position; StartCoroutine(yell); StartCoroutine(wink); StartCoroutine(pettyAction); }
private void ChangeHurtState() { float percent = Hp / hpMax; if (Mathf.Approximately(percent, 1.0f)) { return; } if (percent > 0.8) { hurtState = HurtState.Normal; } else if (percent > 0.6) { hurtState = HurtState.Little; } else if (percent > 0.3) { hurtState = HurtState.Bad; } else if (percent > 0) { hurtState = HurtState.VeryBad; } else { hurtState = HurtState.Destroy; } }
public DieState m_cDieState; //死亡状态 public StateWrap(GfxObject obj) { this.m_cIdleState = new IdleState(obj); this.m_cAttackState = new AttackState(obj); this.m_cMoveState = new MoveState(obj); this.m_cMoveBackState = new MoveBackState(obj); this.m_cHurtState = new HurtState(obj); this.m_cSkillState = new SkillState(obj); this.m_cDieState = new DieState(obj); }
void Start() { drqAnim = transform.Find("assTank_body").Find("assTank_pod").Find("drQ").GetComponent<Animator>(); drqBlood = drqAnim.transform.Find ("blood").GetComponent<ParticleSystem>(); anim = GetComponent<Animator>(); footAud = GetComponent<AudioSource>(); //InvokeRepeating("SwitchWalking",5f,1f); hurtState = Hurt1; StartCoroutine("SwitchWalking"); }
void Start() { drqAnim = transform.Find("assTank_body").Find("assTank_pod").Find("drQ").GetComponent <Animator>(); drqBlood = drqAnim.transform.Find("blood").GetComponent <ParticleSystem>(); anim = GetComponent <Animator>(); footAud = GetComponent <AudioSource>(); //InvokeRepeating("SwitchWalking",5f,1f); hurtState = Hurt1; StartCoroutine("SwitchWalking"); }
private void Start() { sprite = GetComponent <SpriteRenderer>(); audioSource = GetComponent <AudioSource>(); text = GameObjectContainer.Instacne.FindGameObjectComponent <Text>("DamageScore"); canvas = GameObjectContainer.Instacne.FindGameObjectComponent <Transform>("ScoreUI"); Hp = hpMax; Damage = damage; hurtState = HurtState.Normal; audioSource.volume = 0.6f; }
private void Initialize() { audioSource = GetComponent <AudioSource>(); animator = GetComponent <Animator>(); text = GameObjectContainer.Instacne.FindGameObjectComponent <Text>("DamageScore"); canvas = GameObjectContainer.Instacne.FindGameObjectComponent <Transform>("ScoreUI"); winkMethod = Wink(); singMethod = Sing(); Hp = maxHp; Damage = 1.0f; hurtState = HurtState.Normal; }
private void BuildFSM() //Crea los estados, y las trancisiones que llevan a otros estados. { IdleState idle = new IdleState(this); idle.AddTransition(TransitionID.StartRoaming, StateID.Roaming); idle.AddTransition(TransitionID.SawTarget, StateID.ChasingTarget); idle.AddTransition(TransitionID.StartHurt, StateID.Hurt); idle.AddTransition(TransitionID.Dying, StateID.Dead); RoamState roam = new RoamState(this); roam.AddTransition(TransitionID.SawTarget, StateID.ChasingTarget); roam.AddTransition(TransitionID.StopRoaming, StateID.Idle); roam.AddTransition(TransitionID.StartHurt, StateID.Hurt); roam.AddTransition(TransitionID.Dying, StateID.Dead); ChaseTargetState chaseTarget = new ChaseTargetState(this); chaseTarget.AddTransition(TransitionID.LostTarget, StateID.Roaming); chaseTarget.AddTransition(TransitionID.StartHurt, StateID.Hurt); chaseTarget.AddTransition(TransitionID.InRange, StateID.Attack); chaseTarget.AddTransition(TransitionID.Dying, StateID.Dead); AttackState attack = new AttackState(this); attack.AddTransition(TransitionID.OutRange, StateID.ChasingTarget); attack.AddTransition(TransitionID.Dying, StateID.Dead); HurtState hurt = new HurtState(this); hurt.AddTransition(TransitionID.StopHurt, StateID.ChasingTarget); hurt.AddTransition(TransitionID.Dying, StateID.Dead); DeadState dead = new DeadState(this); dead.AddTransition(TransitionID.Healed, StateID.ChasingTarget); fsm = new FSM(); fsm.AddState(roam); fsm.AddState(idle); fsm.AddState(chaseTarget); fsm.AddState(attack); fsm.AddState(hurt); fsm.AddState(dead); }
public override void Hurt(float dmg, bool explosion) { base.Hurt (dmg,explosion); hurtState(); if(dead){ lives--; var p = transform.Find("assTank_body").Find("assTank_pod"); if(lives== 0){ combatZone.EndZone(); p.Find ("assTank_turret").gameObject.SetActive(false); p.Find ("assTank_turret animate").gameObject.SetActive(true); anim.Play ("assTank_DEATH"); this.enabled = false; }else if(lives == 1){ HP = 20; dead = false; p.Find ("glassShatter").GetComponent<TriggerDebris>().Break(); p.Find ("assTank_turret").Find ("assTank_glass3D").gameObject.SetActive(false); p.Find ("assTank_turret").Find ("assTank_glassBroken").gameObject.SetActive(true); hurtState = Hurt2; } } }
private void Awake() { // 创建状态机 StateMachine = new StateMachine(); // 创建所有的状态 var idleState = new IdleState(StateID.Idle, this); var runState = new RunState(StateID.Run, this); var jumpState = new JumpState(StateID.Jump, this); var fallState = new FallState(StateID.Fall, this); var hurtState = new HurtState(StateID.Hurt, this); var crouchState = new CrouchState(StateID.Crouch, this); var deathState = new DeathState(StateID.Death, this); // 初始化状态字典 StateMachine.AddState(idleState); StateMachine.AddState(runState); StateMachine.AddState(jumpState); StateMachine.AddState(fallState); StateMachine.AddState(hurtState); StateMachine.AddState(crouchState); StateMachine.AddState(deathState); // 初始化状态机 StateMachine.Initialize(idleState); }
/// <summary> /// 获取状态 /// </summary> /// <param name="AIState"></param> /// <returns></returns> private StateBase GetState(AIStateType AIState) { if (this.m_StateDic.ContainsKey(AIState)) { return this.m_StateDic[AIState]; } StateBase state; switch (AIState) { case AIStateType.Attack: state = new AttackState(this.m_ActorBev,this.m_ActorAI); break; case AIStateType.Dead: state = new DeadState(this.m_ActorBev, this.m_ActorAI); break; case AIStateType.Hurt: state = new HurtState(this.m_ActorBev, this.m_ActorAI); break; case AIStateType.Idle: state = new IdleState(this.m_ActorBev, this.m_ActorAI); break; default: Debug.Log(AIState.ToString() + " not exsit "); return null; } this.m_StateDic.Add(AIState, state); return state; }