public override void Execute(Player player) { //player.PlayerAC.Stop(); player.transform.LookAt(player.target.transform.position); if (GameObject.FindGameObjectWithTag(Tags.Camera).GetComponent <MyCamera>().getPlotSwitch()) { player.GetFSM().ChangeState(player.States.WalkingState); } float TimeDelayed = 0.0f; if (player.target.GetComponent <Leader>().GetFSM().CurrentState() == player.target.GetComponent <Leader>().States.WaitingState) { if (player.target.GetComponent <Leader>().States.WaitingState.GetHasWaitedTime() < Const.LEADER_REACT_TIME) { TimeDelayed = player.target.GetComponent <Leader>().States.WaitingState.GetHasWaitedTime(); } else { TimeDelayed = Const.LEADER_REACT_TIME; } } if (GUItest.playerWaveHands) { MessageDispatcher.Instance().DisparcherMessage(TimeDelayed, player.ID(), player.target.GetComponent <Leader>().ID(), MessageEnum.PlayerWaveHands); player.GetFSM().ChangeState(player.States.WaveHandState); } else if (GUItest.playerSalute) { MessageDispatcher.Instance().DisparcherMessage(TimeDelayed, player.ID(), player.target.GetComponent <Leader>().ID(), MessageEnum.PlayerSalute); player.GetFSM().ChangeState(player.States.SaluteState); } if (Vector3.Distance(player.gameObject.transform.position, player.target.transform.position) < Const.INTERACTIVE_DISTANCE) { TipAnimation.SetPlayerCanShakeHands(true); if (GUItest.playerShakeHands) { //给主席发消息 MessageDispatcher.Instance().DisparcherMessage(0.5f, player.ID(), player.target.GetComponent <Leader>().ID(), MessageEnum.PlayerShakeHands); player.GetFSM().ChangeState(player.States.ShakeHandsState); } } else { TipAnimation.SetPlayerCanShakeHands(false); } }
public override void Execute(Player player) { if (ClapHandsSwitch) { TipAnimation.SetPlayerCanClapHands(true); if (GUItest.playerClapHands) { player.GetFSM().ChangeState(player.States.HandClapingState); } } else if (player.GetWaittime() < Const.PLAYER_CLAPHANDS_WAIT_TIME) { TipAnimation.SetPlayerCanClapHands(false); } else { player.GetFSM().ChangeState(player.States.IdleState); } }
//触发器的消息一律委托给游戏控制器来发送。不再为触发器再单独建立Entity void OnTriggerEnter(Collider collider) { GameController gameController = GameObject.FindGameObjectWithTag(Tags.GameController).GetComponent <GameController>(); //如果检测到主席进入了触发区域,就让游戏控制器主席发送消息。 if (collider.gameObject.tag == Tags.Leader) { Leader leader = collider.gameObject.GetComponent <Leader>(); //先让主席停下来 MessageDispatcher.Instance().DisparcherMessage(0.0f, gameController.ID(), leader.ID(), MessageEnum.StopWalking); TipAnimation.SetShowFrontSchoolCaption(true); //然后再让主席发表演讲 leader.States.SpeechState.setSpeechContent(AudioClipHash.Leader_SpecialScene02); //可调参数:延时发送消息的时间! MessageDispatcher.Instance().DisparcherMessage(15.0f, gameController.ID(), leader.ID(), MessageEnum.StartSpeech); BGM.Instance().FadeOutBGM(); } }
public override void Exit(Player player) { TipAnimation.SetPlayerCanShakeHands(false); player.CleanWaittime(); }
public override void Exit(Player player) { TipAnimation.SetPlayerCanClapHands(false); player.CleanWaittime(); ClapHandsSwitch = false; }