using System.Collections; using System.Collections.Generic; using UnityEngine; public partial class ArmorSoldierScript : Avatar, IInteractable { void SetupStates() { //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // states //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IdleState idle = new IdleState(m_Animator, Anim_Idle); HurtState lightHurt = new HurtState(m_Animator, Anim_LightHurt); HurtState midiumHurt = new HurtState(m_Animator, Anim_MidiumHurt); HurtState heavyHurt = new HurtState(m_Animator, Anim_HeavyHurt); HurtState groundHurt = new HurtState(m_Animator, Anim_GroundHurt); HurtState airHurt = new HurtState(m_Animator, Anim_AirHurt); m_StateLightHurt = lightHurt; m_StateMidiumHurt = midiumHurt; m_StateHeavyHurt = heavyHurt; m_StateGroundHurt = groundHurt; m_StateAirHurt = airHurt; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // conditions //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ConditionInAir condInAir = new ConditionInAir(m_BodyCollider); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // actions //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ActionSwitchState switchToIdle = new ActionSwitchState(m_StateSystem, idle); Trigger trigger = null; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // state setup //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // air hurt ConditionMotionAtEnd airAtEnd = new ConditionMotionAtEnd(m_Animator, Anim_AirHurt); trigger = new Trigger(And(airAtEnd, Not(condInAir)), switchToIdle); airHurt.AddTrigger(trigger); m_StateSystem.ForceStart(idle); } }