Używam mapy większej niż wyświetlany przeze mnie ekran. Dlatego muszę mieć możliwość poruszania się po tej mapie. Mam problem z zamocowaniem kamery i mapy. Chcę móc korzystać z rozbieżności obrazu jako szerokości i wysokości zacisku. Problemem są jednostki.Jak ustawić granicę mapy i panoramowanie tej mapy tak samo?
Zdjęcie ma 2144 x 1708 Transpozycja kamery składa się z pojedynczych cyfr (14 x 7) lub czegoś w tym stylu.
Cały kod, którego używam, znajduje się poniżej.
private Vector3 mouseOrigin; // Position of cursor when mouse dragging starts
private bool isPanning; // Is the camera being panned?
public bool useBoundary = true;
public Vector2 boundaryMin;
public Vector2 boundaryMax;
public Image map;
void Start()
{
Camera cam = Camera.main;
float mapRatio = map.rectTransform.rect.width/map.rectTransform.rect.height;
float mapScreenHeight = (1.5f * cam.orthographicSize);
float mapScreenWidth = (3f * mapScreenHeight) * cam.aspect;
boundaryMin = new Vector2(0, 1);
boundaryMax = new Vector2(map.rectTransform.rect.width, map.rectTransform.rect.height);
}
void Update()
{
// Get the left mouse button
if (Input.GetMouseButtonDown(0))
{
// Get mouse origin
mouseOrigin = Input.mousePosition;
isPanning = true;
}
// Disable movements on button release
if (!Input.GetMouseButton(0)) isPanning = false;
// Rotate camera along X and Y axis
// Move the camera on it's XY plane
if (isPanning)
{
Vector3 pos = Camera.main.ScreenToViewportPoint(Input.mousePosition - mouseOrigin);
Vector3 move = new Vector3(pos.x * panSpeed, pos.y * panSpeed, 0);
transform.Translate(move, Space.Self);
BoundaryCheck();
}
}
void BoundaryCheck()
{
if (!useBoundary)
return;
Vector3 newPos = transform.position;
newPos.x = Mathf.Clamp(newPos.x, boundaryMin.x, boundaryMax.x);
newPos.y = Mathf.Clamp(newPos.y, boundaryMin.y, boundaryMax.y);
transform.position = newPos;
}
}
Każda pomoc będzie mile widziana.
Nie możesz użyć innego zdjęcia o rozmiarze 14x7? I wystawiasz 'boundaryMin' &' boundaryMax' w edytorze, ale potem w 'Start()' nadpisujesz ich wartość, więc jaki jest sens ich upubliczniania? –
Mogę zmienić rzeczy na prywatne, to nie jest problem. Na mapie panoramowania zwykle ustawiasz rozmiar mapy na podstawie ekranu? Jak to działa, gdy ekran zmienia się na urządzeniu mobilnym? –