Beispiel #1
0
    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;
            }
        }
    }
Beispiel #2
0
    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;
        }
    }
Beispiel #3
0
    /// <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);
    }
Beispiel #4
0
    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);
    }
Beispiel #5
0
    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);
        }
Beispiel #7
0
    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");
    }
Beispiel #8
0
    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");
    }
Beispiel #9
0
    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;
    }
Beispiel #10
0
    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;
    }
Beispiel #11
0
    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);
    }
Beispiel #12
0
    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;
            }
        }
    }
Beispiel #13
0
        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;
 }