Esempio n. 1
0
    /// <summary>
    /// ³õʼ»¯×´Ì¬»ú,Ìí¼ÓÖÖ״̬
    /// </summary>
    private void InitFSM()
    {
        m_FSMSystem = new FSMSystem(this);

        PlayerIdleState idleState = new PlayerIdleState();

        idleState.AddTransition(Transition.PlayerToIdle, StateID.PlayerIdle);
        m_FSMSystem.AddState(idleState);
        PlayerRunState runState = new PlayerRunState();

        runState.AddTransition(Transition.PlayerToTarget, StateID.PlayerRun);
        m_FSMSystem.AddState(runState);
        PlayerBeAttackedState beAttackedState = new PlayerBeAttackedState();

        beAttackedState.AddTransition(Transition.PlayerBeAttacked, StateID.PlayerBeAttacked);
        m_FSMSystem.AddState(beAttackedState);
        PlayerNormalSkillFireState normalSkillFireState = new PlayerNormalSkillFireState();

        normalSkillFireState.AddTransition(Transition.PlayerFireNormalSkill, StateID.PlayerNormalSkill);
        m_FSMSystem.AddState(normalSkillFireState);
        PlayerInitiativeSkillFireState initiativeSkillFireState = new PlayerInitiativeSkillFireState();

        initiativeSkillFireState.AddTransition(Transition.PlayerFireInitiativeSkill, StateID.PlayerInitiativeSkill);
        m_FSMSystem.AddState(initiativeSkillFireState);
    }
Esempio n. 2
0
 private void Awake()
 {
     IdleState  = new PlayerIdleState(this);
     RunState   = new PlayerRunState(this);
     FightState = new PlayerFightState(this);
     WinState   = new PlayerWinState(this);
     LoseState  = new PlayerLoseState(this);
 }
 private void CreateStates()
 {
     IdleState = new PlayerIdleState(this, StateMachine, playerData, "idle");
     RunState  = new PlayerRunState(this, StateMachine, playerData, "run");
     JumpState = new PlayerJumpState(this, StateMachine, playerData, "jump");
     FallState = new PlayerFallState(this, StateMachine, playerData, "fall");
     LandState = new PlayerLandState(this, StateMachine, playerData, "land");
 }
Esempio n. 4
0
 private void Awake()
 {
     StateMachine   = new PlayerStateMachine();
     IdleState      = new PlayerIdleState(this, StateMachine, playerData, "idle");
     MoveState      = new PlayerMoveState(this, StateMachine, playerData, "move");
     RunState       = new PlayerRunState(this, StateMachine, playerData, "run");
     JumpState      = new PlayerJumpState(this, StateMachine, playerData, "inAir");
     LandState      = new PlayerLandState(this, StateMachine, playerData, "land");
     InAirState     = new PlayerInAirState(this, StateMachine, playerData, "inAir");
     DoubleJump     = new PlayerDoubleJumpState(this, StateMachine, playerData, "doubleJump");
     WallSlideState = new PlayerWallSlideState(this, StateMachine, playerData, "wallSlide");
     WallJumpState  = new PlayerWallJumpState(this, StateMachine, playerData, "inAir");
 }
Esempio n. 5
0
    public void InitFSM()
    {
        CachEntityAnimation();
        m_FSMSystem = new FSMSystem(this, AllowStateChange);
        m_FSMSystem.OnPerformTransition += this.OnPlayerStateChangedHandle;
        PlayerIdleState idleState = new PlayerIdleState();

        m_FSMSystem.AddState(idleState);
        PlayerRunState runState = new PlayerRunState();

        m_FSMSystem.AddState(runState);
        PlayerBeAttackedState beAttackedState = new PlayerBeAttackedState();

        m_FSMSystem.AddState(beAttackedState);
        PlayerNormalSkillFireState normalSkillFireState = new PlayerNormalSkillFireState();

        m_FSMSystem.AddState(normalSkillFireState);
        PlayerInitiativeSkillFireState initiativeSkillFireState = new PlayerInitiativeSkillFireState();

        m_FSMSystem.AddState(initiativeSkillFireState);
        InitiativeSkillSelectedState initiativeSkillSelectState = new InitiativeSkillSelectedState();

        m_FSMSystem.AddState(initiativeSkillSelectState);
        m_initiativeSkillSelectedState = initiativeSkillSelectState;
        PlayerFindPathState findPathState = new PlayerFindPathState();

        m_FSMSystem.AddState(findPathState);

        PlayerDieState playerDieState = new PlayerDieState();

        m_FSMSystem.AddState(playerDieState);

        m_FSMSystem.AddState(new PlayerBeAdsorbState());

        m_FSMSystem.AddState(new PlayerScrollSkillFireState());
        m_FSMSystem.AddState(new PlayerBeHitFlyState());
        m_FSMSystem.AddState(new PlayerStandState());
        m_FSMSystem.AddState(new PlayerCastAbilityState());

        m_FSMSystem.PerformTransition(Transition.PlayerToIdle);
    }
Esempio n. 6
0
    private PlayerState GetState(PlayerStateEnum _pse, params object[] _args)
    {
        PlayerState _ret = null;

        switch (_pse)
        {
        case PlayerStateEnum.Stand:
            _ret = new PlayerStandState(gameObject);
            _ret.Reset();
            break;

        case PlayerStateEnum.Walk:
            Vector2         _walkDir = (Vector2)_args[0];
            PlayerWalkState _pws     = new PlayerWalkState(gameObject);
            _pws.Dir = _walkDir;
            _ret     = _pws;
            break;

        case PlayerStateEnum.Run:
            Vector2        _runDir = (Vector2)_args[0];
            PlayerRunState _prs    = new PlayerRunState(gameObject);
            _prs.Dir = _runDir;
            _ret     = _prs;
            break;

        default:
            break;
        }
        if (_ret == null)
        {
            MyLogger.Error("RoleControl", "{0} state don't have a creator!", _pse);
            return(_ret);
        }
        else
        {
            return(_ret);
        }
    }
Esempio n. 7
0
    /// <summary>
    /// ÊÕµœœÇÉ«Òƶ¯Ð­Òé°ü
    /// </summary>
    /// <param name="notifyArgs"></param>
    public void EntityMove(SMsgActionMove_SCS sMsgActionMove_SC)
    {
        if (this.RoleDataModel.SMsg_Header.uidEntity == sMsgActionMove_SC.uidEntity)
        {
            //正常情况下这个实体移动消息不会发给主角,如果是主角说明服务器需要进行位置同步
            if (this.IsHero)
            {
                transform.position = new Vector3(0, 0.1f, 0);
                transform.position = transform.position.GetFromServer(sMsgActionMove_SC.floatX, sMsgActionMove_SC.floatY);

                return;
            }
            if (this.FSMSystem.CurrentStateID != StateID.PlayerIdle &&
                this.FSMSystem.CurrentStateID != StateID.PlayerRun)
            {
                return;
            }

            if (this.IsDie)
            {
                return;
            }

            if (sMsgActionMove_SC.fSpeed > 0.1f)
            {
                if (m_FSMSystem.CurrentStateID == StateID.PlayerIdle)
                {
                    m_smooth.Init(ThisTransform.position,
                                  ThisTransform.TransformDirection(Vector3.forward) * sMsgActionMove_SC.fSpeed / 10.0f,
                                  new Vector3(sMsgActionMove_SC.floatX / 10.0f, 0, -sMsgActionMove_SC.floatY / 10.0f),
                                  new Vector3(sMsgActionMove_SC.fDirectX, 0, -sMsgActionMove_SC.fDirectY) * sMsgActionMove_SC.fSpeed / 10.0f,
                                  ConfigDefineManager.TIME_MOVE_SYNC_FOWARD);
                    for (int i = 0; i <= 10; i++)
                    {
                        Vector3 nodepos = m_smooth.GetCurrentPos(0.1f * i);
                        nodes.Add(new Vector3(nodepos.x, 1, nodepos.z));
                    }

                    m_FSMSystem.PerformTransition(Transition.PlayerToTarget);
                    PlayerRunState state = (PlayerRunState)m_FSMSystem.CurrentState;
                    state.MoveMode = GetMoveModeBySpeed(sMsgActionMove_SC.fSpeed / 10.0f);
                    state.ResetSmooth(ConfigDefineManager.TIME_MOVE_SYNC_FOWARD);
                }
                else if (m_FSMSystem.CurrentStateID == StateID.PlayerRun)
                {
                    PlayerRunState state = (PlayerRunState)m_FSMSystem.CurrentState;
                    state.MoveMode = GetMoveModeBySpeed(sMsgActionMove_SC.fSpeed / 10.0f);
                    state.ResetSmooth(ConfigDefineManager.TIME_MOVE_SYNC_FOWARD);
                    m_smooth.Init(ThisTransform.position,
                                  ThisTransform.TransformDirection(Vector3.forward) * sMsgActionMove_SC.fSpeed / 10.0f,
                                  new Vector3(sMsgActionMove_SC.floatX / 10.0f, 0, -sMsgActionMove_SC.floatY / 10.0f),
                                  new Vector3(sMsgActionMove_SC.fDirectX, 0, -sMsgActionMove_SC.fDirectY) * sMsgActionMove_SC.fSpeed / 10.0f,
                                  ConfigDefineManager.TIME_MOVE_SYNC_FOWARD);
                    for (int i = 0; i <= 10; i++)
                    {
                        Vector3 nodepos = m_smooth.GetCurrentPos(0.1f * i);
                        nodes.Add(new Vector3(nodepos.x, 1, nodepos.z));
                    }
                }
                m_clientEndPos = null;
                ClientMove     = true;
            }
            else
            {
                m_clientEndPos = new Vector3(sMsgActionMove_SC.floatX / 10.0f, 0, sMsgActionMove_SC.floatY / -10.0f);
                ClientMove     = false;
            }
        }
    }