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); }
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); }
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); }