Beispiel #1
0
        public void UpdateMinimap(Transform rotationReference, MinimapModes minimapMode, Transform playerTransform, HNSMapProfile profile, float scale)
        {
            // assign map rotation
            Quaternion identityRotation = Minimap.Panel.transform.rotation;
            Quaternion mapRotation      = identityRotation;

            if (minimapMode == MinimapModes.RotateMinimap)
            {
                mapRotation = Quaternion.Euler(Minimap.Panel.transform.eulerAngles.x, Minimap.Panel.transform.eulerAngles.y, rotationReference.eulerAngles.y);
            }

            //修改 小地图旋转逻辑
            // set player indicator rotation
            if (Minimap.PlayerIndicator != null)
            {
                //修改~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                Transform snakeHead = GameObject.FindGameObjectWithTag("PlayerHead").transform;
                Minimap.PlayerIndicator.transform.localRotation = snakeHead.localRotation;
                //End修改~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                //if (minimapMode == MinimapModes.RotateMinimap)
                //	Minimap.PlayerIndicator.transform.rotation = identityRotation;
                //else
                //	Minimap.PlayerIndicator.transform.rotation = Quaternion.Euler (Minimap.Panel.transform.eulerAngles.x, Minimap.Panel.transform.eulerAngles.y, -rotationReference.eulerAngles.y);
            }

            // calculate map position  计算地图位置
            Vector2 unitScale = profile.GetMapUnitScale();
            Vector3 posOffset = profile.MapBounds.center - playerTransform.position;
            //Vector3 mapPos = new Vector3(posOffset.x * unitScale.x, posOffset.z * unitScale.y, 0f) * scale;     ///
            //修改小地图移动逻辑
            //S修改~~~~~~~~~~~      posOffset-玩家的pos   unitScale偏移量系数
            Vector3 mapPos = new Vector3(posOffset.x * unitScale.x, posOffset.y * unitScale.x, 0f) * scale;

            //Debug.Log("小地图移动逻辑:" + mapPos);
            //End 修改

            // adjust map position when using minimap rotation mode 使用小地图旋转模式时调整地图位置
            if (minimapMode == MinimapModes.RotateMinimap)
            {
                mapPos = playerTransform.MinimapRotationOffset(mapPos);
            }


            // set map position, rotation and scale
            Minimap.MapContainer.localPosition = new Vector2(mapPos.x, mapPos.y);
            Minimap.MapContainer.rotation      = mapRotation;
            Minimap.MapContainer.localScale    = new Vector3(scale, scale, 1f);
        }
Beispiel #2
0
        public void UpdateMinimap(Transform rotationReference, MinimapModes minimapMode, Transform playerTransform, HNSMapProfile profile, float scale)
        {
            Quaternion identityRotation = Minimap.Panel.transform.rotation;
            Quaternion mapRotation      = identityRotation;

            if (minimapMode == MinimapModes.RotateMinimap)
            {
                mapRotation = Quaternion.Euler(Minimap.Panel.transform.eulerAngles.x, Minimap.Panel.transform.eulerAngles.y, rotationReference.eulerAngles.y);
            }


            if (Minimap.PlayerIndicator != null)
            {
                if (minimapMode == MinimapModes.RotateMinimap)
                {
                    Minimap.PlayerIndicator.transform.rotation = identityRotation;
                }
                else
                {
                    Minimap.PlayerIndicator.transform.rotation = Quaternion.Euler(Minimap.Panel.transform.eulerAngles.x, Minimap.Panel.transform.eulerAngles.y, -rotationReference.eulerAngles.y);
                }
            }


            Vector2 unitScale = profile.GetMapUnitScale();
            Vector3 posOffset = profile.MapBounds.center - playerTransform.position;
            Vector3 mapPos    = new Vector3(posOffset.x * unitScale.x, posOffset.z * unitScale.y, 0f) * scale;


            if (minimapMode == MinimapModes.RotateMinimap)
            {
                mapPos = playerTransform.MinimapRotationOffset(mapPos);
            }

            Minimap.MapContainer.localPosition = new Vector2(mapPos.x, mapPos.y);
            Minimap.MapContainer.rotation      = mapRotation;
            Minimap.MapContainer.localScale    = new Vector3(scale, scale, 1f);
        }
Beispiel #3
0
        void UpdateMinimapElement(HUDNavigationElement element, Vector3 screenPos, float distance)
        {
            // check if element is hidden within the minimap
            if (element.hideInMinimap)
            {
                element.SetMarkerActive(NavigationElementType.Minimap, false);
                return;
            }

            // check distance
            if (distance > minimapRadius)
            {
                // invoke events
                if (element.IsInMinimapRadius)
                {
                    element.IsInMinimapRadius = false;
                    element.OnLeaveRadius.Invoke(element, NavigationElementType.Minimap);
                }

                // hide element
                if (!element.ignoreMinimapRadius)
                {
                    element.SetMarkerActive(NavigationElementType.Minimap, false);
                    return;
                }
            }
            else
            {
                // invoke events
                if (!element.IsInMinimapRadius)
                {
                    element.IsInMinimapRadius = true;
                    element.OnEnterRadius.Invoke(element, NavigationElementType.Minimap);
                }
            }

            // rotate marker within minimap with gameobject?
            if (element.rotateWithGameObjectMM)
            {
                element.Minimap.Icon.transform.rotation = Quaternion.Euler(new Vector3(0f, 0f, -element.transform.eulerAngles.y));
            }
            else
            {
                element.Minimap.Icon.transform.rotation = Quaternion.identity;
            }

            // set marker active
            element.SetMarkerActive(NavigationElementType.Minimap, true);

            // calculate marker position
            Vector2 unitScale = minimapProfile.GetMapUnitScale();
            Vector3 posOffset = element.GetPositionOffset(PlayerController.position);

            //修改 小地图“食物”移动逻辑
            //Vector3 markerPos = new Vector3 (posOffset.x * unitScale.x, posOffset.z * unitScale.y, 0f) * minimapScale;  ///
            //Start
            Vector3 markerPos = new Vector3(posOffset.x * unitScale.x, posOffset.y * unitScale.x, 0f) * minimapScale;

            //end

            // adjust marker position when using minimap rotation mode
            if (minimapMode == MinimapModes.RotateMinimap)
            {
                markerPos = PlayerController.MinimapRotationOffset(markerPos);
            }

            // always keep marker within minimap rect
            bool outOfBounds = false;

            markerPos = _HUDNavigationCanvas.Minimap.ElementContainer.KeepInRectBounds(markerPos, out outOfBounds);

            // set marker position
            element.SetMarkerPosition(NavigationElementType.Minimap, markerPos);

            // handle marker's above/below arrows
            element.ShowMinimapAboveArrow(useMinimapHeightSystem && element.useMinimapHeightSystem && !outOfBounds && -posOffset.y < -minimapDistanceAbove);
            element.ShowMinimapBelowArrow(useMinimapHeightSystem && element.useMinimapHeightSystem && !outOfBounds && -posOffset.y > minimapDistanceBelow);
        }