Example #1
0
    public void ChangeState(BEHAVIOR_STATE state)
    {
        if (_curState != BEHAVIOR_STATE.ST_NONE)
        {
            _dictStates[_curState].onExit();
        }

        if (_dictStates.ContainsKey(state))
        {
            _dictStates[state].onEnter();
            _curState = state;
        }
    }
Example #2
0
    public void UpdateState()
    {
        if (_nextState != BEHAVIOR_STATE.ST_NONE && _dictStates.ContainsKey(_nextState))
        {
            ChangeState(_nextState);
            _nextState = BEHAVIOR_STATE.ST_NONE;
        }

        if (_curState != BEHAVIOR_STATE.ST_NONE && _dictStates.ContainsKey(_curState))
        {
            _dictStates[_curState].onUpdate();
            _nextState = _dictStates[_curState].getNextState();
        }
    }
Example #3
0
    public void AddState(BEHAVIOR_STATE state)
    {
        BehaviorState behaviorState = null;

        switch (state)
        {
        case BEHAVIOR_STATE.ST_NONE:
            break;

        case BEHAVIOR_STATE.ST_IDLE:
            behaviorState = new BehaviorState_Idle();
            break;

        case BEHAVIOR_STATE.ST_ATTACK:
            behaviorState = new BehaviorState_Attack();
            break;

        case BEHAVIOR_STATE.ST_FIND:
            behaviorState = new BehaviorState_Find();
            break;

        case BEHAVIOR_STATE.ST_TRACE:
            behaviorState = new BehaviorState_Trace();
            break;

        case BEHAVIOR_STATE.END:
            break;

        default:
            break;
        }
        if (behaviorState != null)
        {
            behaviorState.SetOwner(_owner);
            behaviorState.SetAnimator(_animController);
            behaviorState.SetBehavior(this);
            _dictStates.Add(state, behaviorState);
        }
    }
Example #4
0
    public void SetState(STATE state)
    {
        if (state == curState)
        {
            return;
        }
        curState = state;

        _agent.enabled      = true;
        _agent.angularSpeed = 1000;
        RestAnimator();

        //transform.parent = null;

        switch (curState)
        {
        case STATE.IDLE:
            lastBehaviorState = BEHAVIOR_STATE.IDLE;
            _agent.enabled    = false;
            _anim.SetBool("isIdleBool", true);
            break;

        case STATE.WALK:
            lastBehaviorState = BEHAVIOR_STATE.RUN;
            _agent.speed      = _walkSpeed;
            _anim.SetBool("isWalkBool", true);
            break;

        case STATE.RUN:
            lastBehaviorState = BEHAVIOR_STATE.RUN;
            _agent.speed      = _runSpeed;
            _anim.SetBool("isRunBool", true);
            break;

        case STATE.JUMP:
            _agent.enabled = false;
            _anim.SetBool("isJumpBool", true);
            break;

        case STATE.PATROL:
            lastBehaviorState = BEHAVIOR_STATE.WALK;
            _agent.speed      = _walkSpeed;
            _anim.SetBool("isWalkBool", true);
            break;

        case STATE.CREEP:
            _agent.speed = 1f;
            _anim.SetBool("isCreepBool", true);
            break;

        case STATE.CREEP_IDLE:
            _agent.enabled = false;
            _anim.SetBool("isCreepBool", true);
            break;

        case STATE.CROSS_JUMP:
            _agent.enabled = false;
            _anim.SetBool("isCrossJumpBool", true);
            break;

        case STATE.LOOK_BACK:
            lastBehaviorState = BEHAVIOR_STATE.IDLE;
            _agent.enabled    = false;
            _anim.SetBool("isLookBackBool", true);
            break;

        case STATE.LOOK_AROUND:
            lastBehaviorState = BEHAVIOR_STATE.IDLE;
            _agent.enabled    = false;
            _anim.SetBool("isLookAroundBool", true);
            break;

        case STATE.OBSERVE:
            lastBehaviorState = BEHAVIOR_STATE.WALK;
            _agent.speed      = _walkSpeed;
            _anim.SetBool("isWalkBool", true);
            break;

        case STATE.SMELL:
            lastBehaviorState = BEHAVIOR_STATE.IDLE;
            _agent.enabled    = false;
            _anim.SetBool("isSmellBool", true);
            break;

        //=============================空手
        case STATE.BITE:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isBiteTrigger");
            break;

        case STATE.JUMP_BITE:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isJumpBiteTrigger");
            break;

        case STATE.CREEP_GRAB:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isCreepGrabTrigger");
            break;

        case STATE.CREEP_GRAB_FORCE:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isCreepGrabForceTrigger");
            break;

        case STATE.GRAB:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isGrabTrigger");
            break;

        case STATE.GRAB_FAST:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isGrabFastTrigger");
            break;

        case STATE.WRESTLING:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isWrestlingTrigger");
            break;

        case STATE.ARM1:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isArm1Trigger");
            break;

        case STATE.ARM2:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isArm2Trigger");
            break;

        case STATE.ARM3:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isArm3Trigger");
            break;

        case STATE.ARM4:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isArm4Trigger");
            break;

        case STATE.ARM5:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isArm5Trigger");
            break;

        case STATE.ARM6:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isArm6Trigger");
            break;

        case STATE.ARM7:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isArm7Trigger");
            break;

        //=============================拿刀
        case STATE.KNIFE1:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isKnife1Trigger");
            break;

        case STATE.KNIFE2:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isKnife2Trigger");
            break;

        case STATE.KNIFE3:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isKnife3Trigger");
            break;

        case STATE.KNIFE4:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isKnife4Trigger");
            break;

        case STATE.KNIFE5:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetTrigger("isKnife5Trigger");
            break;

        //=============================锤子
        case STATE.HAMMER1:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetBool("isHammer1Bool", true);
            break;

        case STATE.HAMMER2:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetBool("isHammer2Bool", true);
            break;

        case STATE.HAMMER3:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetBool("isHammer3Bool", true);
            break;

        case STATE.HAMMER4:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetBool("isHammer4Bool", true);
            break;

        case STATE.HAMMER5:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetBool("isHammer5Bool", true);
            break;

        case STATE.HAMMER6:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetBool("isHammer6Bool", true);
            break;

        case STATE.HAMMER7:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetBool("isHammer7Bool", true);
            break;

        case STATE.HAMMER8:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetBool("isHammer8Bool", true);
            break;

        case STATE.HAMMER9:
            lastBehaviorState = BEHAVIOR_STATE.SKILL;
            _agent.enabled    = false;
            _anim.SetBool("isHammer9Bool", true);
            break;

        case STATE.BEATEN_WALK_SPASTICITY:
            _agent.speed        = 1f;
            _agent.angularSpeed = 0;
            _anim.SetTrigger("isBeatenWalkSpasticityTrigger");
            break;

        case STATE.BEATEN_RUN_SPASTICITY:
            _agent.speed        = 1f;
            _agent.angularSpeed = 0;
            _anim.SetTrigger("isBeatenRunSpasticityTrigger");
            break;

        case STATE.BEATEN_ATTACK_SPASTICITY:
            _agent.speed        = 1f;
            _agent.angularSpeed = 0;
            _anim.SetTrigger("isBeatenAttackSpasticityTrigger");
            break;

        case STATE.BEATEN_LEFT:
            _agent.enabled = false;
            _anim.SetTrigger("isBeatenLeftTrigger");
            break;

        case STATE.BENTEN_RIGHT:
            _agent.enabled = false;
            _anim.SetTrigger("isBeatenRightTrigger");
            break;

        case STATE.PLAY_DEAD:
            _agent.enabled = false;
            _anim.SetTrigger("isPlayDeadTrigger");
            break;

        case STATE.DEATH:
            _agent.enabled = false;
            if (zmbType == ZMB_TYPE.GENERAL)
            {
                _anim.SetTrigger("isDeath1Front");
            }
            else
            {
                _anim.SetTrigger("isDeathTrigger");
            }
            //_anim.SetTrigger("isDeath1BackATrigger");
            break;
        }
    }
Example #5
0
 public bool IsContainState(BEHAVIOR_STATE state)
 {
     return(_dictStates.ContainsKey(state));
 }