public void Start() { Game = Game.Instance; Player = Game.LocalPlayer; PlayerFsm = Player.GetComponent <PlayerFsmBehaviour>().PlayerFsm; TurnStatusText = GameObject.Find("Text_TurnStatus").GetComponent <Text>(); CharacterNameText = GameObject.Find("Text_CharacterName").GetComponent <Text>(); }
public override void MakeFsm() { CurFsm = new PlayerFsm(path); CurFsm.m_DoDrawSelected = true; PlayerState_Walk walk = new PlayerState_Walk(PlayerStateID.Walk.GetHashCode()); walk.AddTransition(new Tr_Move_Walk2Run(PlayerStateID.Run.GetHashCode())); CurFsm.AddState(walk); PlayerState_Run run = new PlayerState_Run(PlayerStateID.Run.GetHashCode()); run.AddTransition(new Tr_Move_Run2Walk(PlayerStateID.Walk.GetHashCode())); CurFsm.AddState(run); }
public override void MakeFsm() { m_Fsm = new PlayerFsm(path); m_Fsm.m_DoDrawSelected = true; PlayerState_Walk walk = new PlayerState_Walk(); walk.AddTransition(new Tr_Move_Walk2Run()); m_Fsm.AddState(walk); PlayerState_Run run = new PlayerState_Run(); run.AddTransition(new Tr_Move_Run2Walk()); m_Fsm.AddState(run); }
private void SetupFsmSubscriptions(PlayerFsm playersFsm) { playersFsm.CurrentStateReactiveProperty .Where(state => state.ID.Equals(PlayerFSMStates.PlayerTurn)) .Subscribe(_ => { DealCardToPlayer(playersFsm.Player); }); playersFsm.CurrentStateReactiveProperty .Where(state => state.ID.Equals(PlayerFSMStates.Stand)) .Subscribe(_ => SwitchPlayers()); playersFsm.CurrentStateReactiveProperty .Where(state => state.ID.Equals(PlayerFSMStates.EndTurn)) .Subscribe(_ => SwitchPlayers()); }
public override void OnUpdate() { base.OnUpdate(); frame++; PlayerFsm fsm = MyFsm as PlayerFsm; if (fsm.path == null || fsm.path.Length <= 0) { return; } Vector3 moveDir = fsm.path[fsm.curIdx].position - MyAIMgr.transform.position; if (moveDir.magnitude < 0.1f) { fsm.curIdx = (fsm.curIdx + 1) % fsm.path.Length; moveDir = fsm.path[fsm.curIdx].position - MyAIMgr.transform.position; } MyAIMgr.transform.rotation = Quaternion.LookRotation(moveDir); MyAIMgr.transform.position = MyAIMgr.transform.position + MyAIMgr.transform.forward * 0.03f; }
public override void Update() { base.Update(); frame++; PlayerFsm fsm = m_Fsm as PlayerFsm; if (fsm.path == null || fsm.path.Length <= 0) { return; } Vector3 moveDir = fsm.path[fsm.curIdx].position - fsm.Trans.position; if (moveDir.magnitude < 0.1f) { fsm.curIdx = (fsm.curIdx + 1) % fsm.path.Length; moveDir = fsm.path[fsm.curIdx].position - fsm.Trans.position; } fsm.Trans.rotation = Quaternion.LookRotation(moveDir); fsm.Trans.position = fsm.Trans.position + fsm.Trans.forward * 0.03f; }
public PlayerMovement(PlayerFsm fsm, HeroPhaseState heroPhaseState) : base(fsm) { HeroPhaseState = heroPhaseState; }
public PlayerAttack(PlayerFsm fsm, HeroPhaseState heroPhaseState, Attack attack) : base(fsm) { HeroPhaseState = heroPhaseState; Entity = fsm.Player.GetComponent <Entity>(); Attack = attack; }
/// <summary> /// Base层状态切换 /// </summary> public override void BaseLayerUpdate() { if (DLInputManager.RightTrigger(ActionCode.R2) || DLInputManager.LeftTrigger(ActionCode.L2)) { PlayerFsm.SetTransition(Transition.NormalIdleTSFightIdle); return; } else if (DLInputManager.GetButton(ActionCode.LButton)) { playerRotateWithCamera.enabled = true; PlayerFsm.SetTransition(Transition.NormalIdleTSSprint); return; } else if (DLInputManager.GetButton(ActionCode.Circle)) { PlayerFsm.SetTransition(Transition.NormalIdleTSPickUp); return; } else if (playerRayCast.isCoverR && DLInputManager.GetButton(ActionCode.Cross)) { playerRotateWithCamera.enabled = false; CoroutineTaskManager.Instance.WaitSecondTodo(() => { PS4ShakeManager.Instance.ShakeTrigger(PS4ShakePriorityEnum.PS4ShakePriority.BunkerShake, 0.2f, 100, 50); }, 0.3f); //if (!playerController.PlayCoverAudio) //{ // CreateAudioEffect(playerRayCast.Hit.collider.gameObject, playerRayCast.Hit.point, 0.1f); // playerController.PlayCoverAudio = true; //} if (playerRayCast.isFirstSide) { BunkerChoose(playerRayCast.Hit, new Vector3(0, 0, 0), playerRayCast.Hit.transform.right, 1, playerRayCast.Hit.transform.forward); } else if (playerRayCast.isSecondSide) { BunkerChoose(playerRayCast.Hit, new Vector3(0, 90, 0), playerRayCast.Hit.transform.forward, 1, playerRayCast.Hit.transform.right); } else if (playerRayCast.isThirdSide) { BunkerChoose(playerRayCast.Hit, new Vector3(0, 180, 0), playerRayCast.Hit.transform.right, -1, playerRayCast.Hit.transform.forward); } else { BunkerChoose(playerRayCast.Hit, new Vector3(0, 270, 0), playerRayCast.Hit.transform.forward, -1, playerRayCast.Hit.transform.right); } PlayerFsm.SetTransition(Transition.NormalIdleTSCoverR); return; } else if (playerRayCast.isCoverL && DLInputManager.GetButton(ActionCode.Cross)) { playerRotateWithCamera.enabled = false; CoroutineTaskManager.Instance.WaitSecondTodo(() => { PS4ShakeManager.Instance.ShakeTrigger(PS4ShakePriorityEnum.PS4ShakePriority.BunkerShake, 0.2f, 100, 50); }, 0.3f); //if (!playerController.PlayCoverAudio) //{ // CreateAudioEffect(playerRayCast.Hit.collider.gameObject, playerRayCast.Hit.point, 0.1f); // playerController.PlayCoverAudio = true; //} if (playerRayCast.isFirstSide) { BunkerChoose(playerRayCast.Hit, new Vector3(0, 0, 0), playerRayCast.Hit.transform.right, 1, playerRayCast.Hit.transform.forward); } else if (playerRayCast.isSecondSide) { BunkerChoose(playerRayCast.Hit, new Vector3(0, 90, 0), playerRayCast.Hit.transform.forward, 1, playerRayCast.Hit.transform.right); } else if (playerRayCast.isThirdSide) { BunkerChoose(playerRayCast.Hit, new Vector3(0, 180, 0), playerRayCast.Hit.transform.right, -1, playerRayCast.Hit.transform.forward); } else { BunkerChoose(playerRayCast.Hit, new Vector3(0, 270, 0), playerRayCast.Hit.transform.forward, -1, playerRayCast.Hit.transform.right); } PlayerFsm.SetTransition(Transition.NormalIdleTSCoverL); return; } else if (playerRayCast.isCoverHiR && DLInputManager.GetButton(ActionCode.Cross)) { //if (!playerController.PlayCoverAudio) //{ // CreateAudioEffect(playerRayCast.m_HitHi.collider.gameObject, playerRayCast.m_HitHi.point, 0.1f); // playerController.PlayCoverAudio = true; //} playerRotateWithCamera.enabled = false; if (playerRayCast.isFirstSide) { BunkerChoose(playerRayCast.HitHi, new Vector3(0, 0, 0), playerRayCast.HitHi.transform.right, 1, playerRayCast.HitHi.transform.forward); } else if (playerRayCast.isSecondSide) { BunkerChoose(playerRayCast.HitHi, new Vector3(0, 90, 0), playerRayCast.HitHi.transform.forward, 1, playerRayCast.HitHi.transform.right); } else if (playerRayCast.isThirdSide) { BunkerChoose(playerRayCast.HitHi, new Vector3(0, 180, 0), playerRayCast.HitHi.transform.right, -1, playerRayCast.HitHi.transform.forward); } else { BunkerChoose(playerRayCast.HitHi, new Vector3(0, 270, 0), playerRayCast.HitHi.transform.forward, -1, playerRayCast.HitHi.transform.right); } PlayerFsm.SetTransition(Transition.NormalIdleTSCoverHiR); return; } else if (playerRayCast.isCoverHiL && DLInputManager.GetButton(ActionCode.Cross)) { //if (!playerController.PlayCoverAudio) //{ // CreateAudioEffect(playerRayCast.m_HitHi.collider.gameObject, playerRayCast.m_HitHi.point, 0.1f); // playerController.PlayCoverAudio = true; //} playerRotateWithCamera.enabled = false; if (playerRayCast.isFirstSide) { BunkerChoose(playerRayCast.HitHi, new Vector3(0, 0, 0), playerRayCast.HitHi.transform.right, 1, playerRayCast.HitHi.transform.forward); } else if (playerRayCast.isSecondSide) { BunkerChoose(playerRayCast.HitHi, new Vector3(0, 90, 0), playerRayCast.HitHi.transform.forward, 1, playerRayCast.HitHi.transform.right); } else if (playerRayCast.isThirdSide) { BunkerChoose(playerRayCast.HitHi, new Vector3(0, 180, 0), playerRayCast.HitHi.transform.right, -1, playerRayCast.HitHi.transform.forward); } else { BunkerChoose(playerRayCast.HitHi, new Vector3(0, 270, 0), playerRayCast.HitHi.transform.forward, -1, playerRayCast.HitHi.transform.right); } PlayerFsm.SetTransition(Transition.NormalIdleTSCoverHiL); return; } else if (playerController.isUsePad) { playerController.CharacterCameraProxy.SwitchCameraModeType(CameraModeType.UsePadMode); PlayerFsm.SetTransition(Transition.NormalIdleTSUsePad); return; } else if (playerController.isOpenDoor) { playerController.CharacterCameraProxy.SwitchCameraModeType(CameraModeType.OpenDoorMode); PlayerFsm.SetTransition(Transition.NormalIdleTSOpenDoor); return; } else if (playerController.isTurnR) { PlayerFsm.SetTransition(Transition.NormalIdleTSTurnR); return; } else if (playerController.isTurnL) { PlayerFsm.SetTransition(Transition.NormalIdleTSTurnL); return; } else { if (!playerRayCast.isHitObj) { if (Mathf.Abs(playerController.HorizontalL) >= 0.19f || Mathf.Abs(playerController.VerticalL) >= 0.19f) { playerRotateWithCamera.enabled = true; PlayerFsm.SetTransition(Transition.NormalIdleTSNormalMove); return; } } else { if (Mathf.Abs(playerController.VerticalL) >= 0.19f || Mathf.Abs(playerController.VerticalL) < 0.19f && playerController.HorizontalL < -0.19f) { playerRotateWithCamera.enabled = true; PlayerFsm.SetTransition(Transition.NormalIdleTSNormalMove); return; } } } }
public PlayerState(PlayerFsm fsm) : base(fsm) { Game = fsm.Game; Player = fsm.Player; }
public HeroPhaseState(PlayerFsm fsm) : base(fsm) { }