Ejemplo n.º 1
0
        protected override void SetupStates()
        {
            var stoppedState   = new StoppedState(this);
            var followingState = new FollowingTarget(this, tryingToOpenDoorSound,
                                                     () => brokeDoorPercentage, timeToWaitWhenWalkingAndSeePlayer);
            var walkAroundState = new WalkAroundState(this, tryingToOpenDoorSound,
                                                      () => brokeDoorPercentage, timeToWaitWhenWalkingAndSeePlayer,
                                                      () => numberOfFlagsToLookAt,
                                                      () => numberOfFlagsToSkip);
            var killingTargetState = new KillingTargetState(this, macheteSound);

            var seenTargetTransition = new TargetOnSightTransition(this, followingState, seeYou);
            var targetIsCloseToKill  = new TargetIsClose(this, killingTargetState, distanceToKillTarget, () => coolDownAfterCloseDoor > minKillCoolDownAfterCloseDoor);
            var targetUnreachable    = new TargetUnreachable(this, walkAroundState);
            var targetGiveUp         = new TargetGiveUp(this, walkAroundState, () => timeToGiveUp);

            stoppedState.SetTransitions(seenTargetTransition);
            followingState.SetTransitions(
                targetIsCloseToKill,
                targetUnreachable,
                targetGiveUp);
            walkAroundState.SetTransitions(seenTargetTransition);
            SetFirstState(walkAroundState);

            allStates = new State[] { stoppedState, followingState, walkAroundState, killingTargetState };
        }
Ejemplo n.º 2
0
 // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     //transfPlayer = FindObjectOfType<PlayerControllerBB>().transform;
     transfPlayer = GameObject.FindGameObjectWithTag("Player").transform;
     lastpos      = transfPlayer.position;
     controller   = animator.GetComponent <FollowingTarget>();
 }