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; HurtState getUp = new HurtState(m_Animator, Anim_GetUp); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // conditions //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ConditionInAir condInAir = new ConditionInAir(m_BodyCollider); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // actions //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ActionSwitchState switchToIdle = new ActionSwitchState(m_StateController, idle); ActionSwitchState switchToGetUp = new ActionSwitchState(m_StateController, getUp); Trigger trigger = null; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // state setup //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // light hurt ConditionMotionAtEnd lightHurtAtEnd = new ConditionMotionAtEnd(m_Animator, Anim_LightHurt); trigger = new Trigger(lightHurtAtEnd, switchToIdle); lightHurt.AddTrigger(trigger); // air hurt ConditionMotionAtEnd airAtEnd = new ConditionMotionAtEnd(m_Animator, Anim_AirHurt); trigger = new Trigger(And(airAtEnd, Not(condInAir)), switchToGetUp); airHurt.AddTrigger(trigger); // getup ConditionMotionAtEnd getUpEnd = new ConditionMotionAtEnd(m_Animator, Anim_GetUp); trigger = new Trigger(getUpEnd, switchToIdle); getUp.AddTrigger(trigger); m_StateController.ForceStart(idle); } }