void OnClickTarget(InteractiveObj target) { if (EventSystem.current.IsPointerOverGameObject()) { return; } if (Jyx2Player.GetPlayer().IsOnBoat) { return; } //先判断角色是否已经足够近了 var levelMaster = LevelMaster.Instance; if (levelMaster == null) { Debug.LogError("LevelMaster is NULL! but click target triggered."); return; } if ((levelMaster.GetPlayerPosition() - target.transform.position).magnitude > EVENT_TRIGGER_DISTANCE) { StoryEngine.Instance.DisplayPopInfo("我需要离得更近一些"); return; } evtManager.OnClicked(this); }
void OnTriggerEnter(Collider other) { if (EventSystem.current.IsPointerOverGameObject()) { return; } if (Jyx2Player.GetPlayer().IsOnBoat) { return; } evtManager.OnTriggerEvent(this); }
void ShowEnterButton(string mapKey, string command, string showText) { mapKey = mapKey.Replace("jyx2_BigMap", "0_BigMap"); //fix命名 if (!CheckCanEnterMap(mapKey)) { GameUtil.DisplayPopinfo("目前还不能进入"); return; } if (string.IsNullOrEmpty(showText)) { showText = "进入"; } Jyx2_UIManager.Instance.ShowUI("InteractUIPanel", showText, new Action(() => { //记录当前地图 LevelMaster.LastGameMap = LevelMaster.Instance.GetCurrentGameMap(); //记录当前世界位置 if (LevelMaster.Instance.GetCurrentGameMap().Tags.Contains("WORLDMAP")) { GameRuntimeData.Instance.WorldPosition = UnityTools.Vector3ToString(LevelMaster.Instance.GetPlayerPosition()); Jyx2Player.GetPlayer().RecordWorldInfo(); } //command 优先级高于mapKey if (!string.IsNullOrEmpty(command)) { StoryEngine.Instance.ExecuteCommand(Command, null); } else if (!string.IsNullOrEmpty(mapKey)) { //大地图附加上位置 if (mapKey.StartsWith("0_BigMap") && !mapKey.Contains("transport")) { var currentMap = LevelMaster.Instance.GetCurrentGameMap(); if (!string.IsNullOrEmpty(currentMap.BigMapTriggerName)) { mapKey += "&transport#" + currentMap.BigMapTriggerName; } } LevelLoader.LoadGameMap(mapKey); } })); }
void LoadSpawnPosition() { if (runtime == null || _player == null) { return; } var map = GetCurrentGameMap(); if (map == null) { return; } if (loadPara.loadType == LevelLoadPara.LevelLoadType.Load) { if (map.Tags.Contains("WORLDMAP")) { if (string.IsNullOrEmpty(runtime.WorldPosition)) { return; } Jyx2Player.GetPlayer().LoadWorldInfo(); } else { var pos = UnityTools.StringToVector3(runtime.CurrentPos); //从指定位置读取 PlayerSpawnAt(pos); } } else if (loadPara.loadType == LevelLoadPara.LevelLoadType.Entrance) { if (map.Tags.Contains("WORLDMAP")) //大地图 { if (string.IsNullOrEmpty(runtime.WorldPosition)) { return; } Jyx2Player.GetPlayer().LoadWorldInfo(); } else { var entranceObj = GameObject.FindGameObjectWithTag("Entrance"); //找入口 if (entranceObj != null) { var spawnPos = entranceObj.transform.position; PlayerSpawnAt(spawnPos); } } } else if (loadPara.loadType == LevelLoadPara.LevelLoadType.StartAtTrigger) { GameObject startTrigger = GameObject.Find(loadPara.triggerName); if (startTrigger == null) { Debug.LogError($"地图{map.Name}的指定载入trigger:{loadPara.triggerName} 未定义"); return; } var spawnPos = startTrigger.transform.position; PlayerSpawnAt(spawnPos); } else if (loadPara.loadType == LevelLoadPara.LevelLoadType.StartAtPos) { PlayerSpawnAt(UnityTools.StringToVector3(loadPara.CurrentPos)); } }