コード例 #1
0
    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);
    }
コード例 #2
0
    void OnTriggerEnter(Collider other)
    {
        if (EventSystem.current.IsPointerOverGameObject())
        {
            return;
        }

        if (Jyx2Player.GetPlayer().IsOnBoat)
        {
            return;
        }

        evtManager.OnTriggerEvent(this);
    }
コード例 #3
0
    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);
            }
        }));
    }
コード例 #4
0
    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));
        }
    }