Мини карта сделана с помощью Raw Image, отображающий Render Texture. Накопал скрипт в инете:
Синтаксис:
Используется csharp
public enum Mode { topLeft = 0, topRight = 1, bottomLeft = 2, bottomRight = 3 };
public Mode minimapMode = Mode.bottomLeft;
public float zoom = 10;
bool isMouseEnter = false;
public void MouseEnterOrNot(bool isMouse)
{
isMouseEnter = isMouse;
}
void SetWorldPosition()
{
mouse = Input.mousePosition;
float X = 0;
float Y = 0;
X = rawImageTransform.anchoredPosition.x - rawImageTransform.sizeDelta.x / 2;
Y = rawImageTransform.anchoredPosition.y - rawImageTransform.sizeDelta.y / 2;
switch (minimapMode)
{
case Mode.topLeft:
Y += Screen.height;
break;
case Mode.topRight:
X += Screen.width;
Y += Screen.height;
break;
case Mode.bottomRight:
X += Screen.width;
break;
}
curPos = new Vector3(mouse.x - X, mouse.y - Y, 0);
X = rawImageTransform.sizeDelta.x / 2;
Y = rawImageTransform.sizeDelta.y / 2;
Vector3 pos = new Vector3((curPos.x - X) / zoom, 0, (curPos.y - Y) / zoom);
Camera.main.transform.position = pos;
}
private void Update()
{
if (isMouseEnter)
{
if (Input.GetMouseButtonDown(0) )
{
SetWorldPosition();
}
}
}
public Mode minimapMode = Mode.bottomLeft;
public float zoom = 10;
bool isMouseEnter = false;
public void MouseEnterOrNot(bool isMouse)
{
isMouseEnter = isMouse;
}
void SetWorldPosition()
{
mouse = Input.mousePosition;
float X = 0;
float Y = 0;
X = rawImageTransform.anchoredPosition.x - rawImageTransform.sizeDelta.x / 2;
Y = rawImageTransform.anchoredPosition.y - rawImageTransform.sizeDelta.y / 2;
switch (minimapMode)
{
case Mode.topLeft:
Y += Screen.height;
break;
case Mode.topRight:
X += Screen.width;
Y += Screen.height;
break;
case Mode.bottomRight:
X += Screen.width;
break;
}
curPos = new Vector3(mouse.x - X, mouse.y - Y, 0);
X = rawImageTransform.sizeDelta.x / 2;
Y = rawImageTransform.sizeDelta.y / 2;
Vector3 pos = new Vector3((curPos.x - X) / zoom, 0, (curPos.y - Y) / zoom);
Camera.main.transform.position = pos;
}
private void Update()
{
if (isMouseEnter)
{
if (Input.GetMouseButtonDown(0) )
{
SetWorldPosition();
}
}
}
Собственно так, при наведении мышки на Raw Image isMouseEnter = true и перемещаемся, проблема в том, что перемещение происходит не так, как нужно, сильно зависит от zoom, который можно настроить методом тыка в редакторе, но все сразу меняется, когда изменяется разрешение экрана, вот тогда перемещение становится вообще странным.
Сразу второй вопрос, мне нужно отобразить на миникарте границу вида основной камеры. На это я вообще не нашел ответ.
Может есть еще решения? Спасибо.