/// <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); }
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"); }
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"); }
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); }
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); } }
/// <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; } } }