示例#1
0
 private void OnSetState(SwimState state)
 {
     if (state == SwimState.Dive)
     {
         PlayerAudioModule.Get().PlayBeforeDivingSound();
         this.UpdateAudioMixer(true);
         GreenHellGame.Instance.SetSnapshot(AudioMixerSnapshotGame.Underwater, 0.5f);
         return;
     }
     if (state == SwimState.Swim)
     {
         this.UpdateAudioMixer(false);
         GreenHellGame.Instance.SetSnapshot(AudioMixerSnapshotGame.Default, 0.5f);
         PlayerAudioModule.Get().PlayAfterDivingSound();
     }
 }
示例#2
0
 private void SetState(SwimState state)
 {
     this.m_State            = state;
     this.m_StateChangedTime = Time.time;
     this.OnSetState(state);
 }
示例#3
0
    private void ConstructFSM()
    {
        /*
         * //Get the list of points
         * pointList = GameObject.FindGameObjectsWithTag("WandarPoint");
         *
         * Transform[] waypoints = new Transform[pointList.Length];
         * int i = 0;
         * foreach(GameObject obj in pointList)
         * {
         * waypoints[i] = obj.transform;
         * i++;
         * }
         *
         * PatrolState patrol = new PatrolState(waypoints);
         *
         * patrol.AddTransition(Transition.SawPlayer, FSMStateID.Chasing);
         * patrol.AddTransition(Transition.NoHealth, FSMStateID.Dead);
         */
/*        ChaseState chase = new ChaseState(waypoints);
 *      chase.AddTransition(Transition.LostPlayer, FSMStateID.Patrolling);
 *      chase.AddTransition(Transition.ReachPlayer, FSMStateID.Attacking);
 *      chase.AddTransition(Transition.NoHealth, FSMStateID.Dead);
 *
 *      AttackState attack = new AttackState(waypoints);
 *      attack.AddTransition(Transition.LostPlayer, FSMStateID.Patrolling);
 *      attack.AddTransition(Transition.SawPlayer, FSMStateID.Chasing);
 *      attack.AddTransition(Transition.NoHealth, FSMStateID.Dead);
 *
 */

        // AddFSMState(patrol);

/*        AddFSMState(chase);
 *      AddFSMState(attack);
 *      AddFSMState(dead);*/

        SwimState              swim              = new SwimState();
        SawObstacleState       sawObstacle       = new SawObstacleState();
        TurningAwayState       turningAway       = new TurningAwayState();
        JumpState              jump              = new JumpState();
        JumpingUnderWaterState jumpingUnderWater = new JumpingUnderWaterState();
        JumpingAboveWaterState jumpingAboveWater = new JumpingAboveWaterState();
        BumpState              bump              = new BumpState();
        FallingState           falling           = new FallingState();
        HitWaterState          hitWater          = new HitWaterState();
        DeadState              dead              = new DeadState();

        AddFSMState(swim);
        AddFSMState(sawObstacle);
        AddFSMState(turningAway);
        AddFSMState(jump);
        AddFSMState(jumpingUnderWater);
        AddFSMState(jumpingAboveWater);
        AddFSMState(falling);
        AddFSMState(hitWater);
        AddFSMState(bump);
        AddFSMState(dead);

        swim.AddTransition(Transition.Tapped, FSMStateID.Jump);
        swim.AddTransition(Transition.BumpedIntoSomething, FSMStateID.Bump);
        swim.AddTransition(Transition.SawObstacle, FSMStateID.SawObstacle);
        swim.AddTransition(Transition.SwimmingToTurning, FSMStateID.TurningAway);
        swim.AddTransition(Transition.GoneBelow, FSMStateID.Dead);

        sawObstacle.AddTransition(Transition.FoundClearDirection, FSMStateID.TurningAway);
        turningAway.AddTransition(Transition.TurnIsComplete, FSMStateID.Swimming);

        jump.AddTransition(Transition.HasJumped, FSMStateID.JumpingUnderWater);

        jumpingUnderWater.AddTransition(Transition.AboveWater, FSMStateID.JumpingAboveWater);
        jumpingUnderWater.AddTransition(Transition.ReturnToSwimming, FSMStateID.Swimming);

        jumpingAboveWater.AddTransition(Transition.ReachedApex, FSMStateID.Falling);

        falling.AddTransition(Transition.AtSurface, FSMStateID.HitWater);

        hitWater.AddTransition(Transition.UnderWater, FSMStateID.JumpingUnderWater);

        bump.AddTransition(Transition.HasBumped, FSMStateID.JumpingUnderWater);

        dead.AddTransition(Transition.NoHealth, FSMStateID.Dead);
        dead.AddTransition(Transition.Z, FSMStateID.Swimming);

        //falling.AddTransition(Transition.GoneBelow, FSMStateID.Dead);
    }