Files
ChunilENG/Assets/Scripts/UI/Panel_MiniMap.cs

71 lines
2.0 KiB
C#
Raw Normal View History

2025-03-12 17:36:23 +09:00
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using WI;
namespace CHN
{
public class Panel_MiniMap : PanelBase
{
OrbitalControllerTarget target;
Image MiniMapScreen;
RectTransform Image_MiniMapIcon;
TextMeshProUGUI Text_MiniMapFloor;
2025-03-27 18:14:04 +09:00
Vector2 worldMin = new Vector2(5.8f, 173f);
Vector2 worldMax = new Vector2(108f, 240.5f);
2025-03-12 17:36:23 +09:00
[SerializeField]
Sprite[] miniMapImages;
public override void AfterAwake()
{
target = FindSingle<OrbitalControllerTarget>();
2025-03-18 13:57:27 +09:00
SetActive(false);
2025-03-12 17:36:23 +09:00
}
private void Update()
{
UpdateMiniMapIcon();
2025-03-12 17:36:23 +09:00
}
public void ChangeMiniMapFloor(int floorValue)
{
int floor = floorValue + 1;
2025-04-17 16:36:08 +09:00
Text_MiniMapFloor.text = floor.ToString() + " F";
2025-03-12 17:36:23 +09:00
MiniMapScreen.sprite = miniMapImages[floorValue];
}
void UpdateMiniMapIcon()
2025-03-12 17:36:23 +09:00
{
Vector2 worldPos = new Vector2(target.transform.position.x, target.transform.position.z);
Vector2 normalizedPos = (worldPos - worldMin) / (worldMax - worldMin);
RectTransform miniMapRect = MiniMapScreen.GetComponent<RectTransform>();
Vector2 miniMapSize = miniMapRect.rect.size;
Vector2 iconPos = new Vector2(
(normalizedPos.x * miniMapSize.x) - (miniMapSize.x * 0.5f),
(normalizedPos.y * miniMapSize.y) - (miniMapSize.y * 0.5f)
);
Image_MiniMapIcon.anchoredPosition = iconPos;
float cameraRotateY = Camera.main.transform.eulerAngles.y;
Image_MiniMapIcon.localEulerAngles = new Vector3(0, 0, -cameraRotateY);
2025-03-12 17:36:23 +09:00
}
public void SetActive()
{
var isActive = gameObject.activeSelf;
var active = isActive ? false : true;
gameObject.SetActive(active);
}
}
}