मैं देख रहा स्क्रीन से बड़ा नक्शा का उपयोग कर रहा हूं। इसलिए मुझे उस मानचित्र के चारों ओर पैन करने में सक्षम होना चाहिए। मुझे कैमरा और मानचित्र को क्लैंप करने में कोई समस्या है। मैं क्लैंप की चौड़ाई और ऊंचाई के रूप में छवि के आयाम का उपयोग करने में सक्षम होना चाहता हूं। समस्या इकाइयां है।मैं मानचित्र की सीमा कैसे बना सकता हूं और उस मानचित्र की पैनिंग को वही कैसे बना सकता हूं?
छवि 2144 x 1708 कैमरा ट्रांसपोजिशन एकल अंकों (14 x 7) या ऐसा कुछ है।
मेरे द्वारा उपयोग किए जा रहे सभी कोड नीचे दिए गए हैं।
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;
}
}
किसी भी मदद की बहुत सराहना की जाएगी।
क्या आप आकार 14x7 की दूसरी छवि का उपयोग नहीं कर सकते? और आप संपादक में 'सीमामाइन' और 'सीमा मैक्स 'का पर्दाफाश कर रहे हैं लेकिन फिर' स्टार्ट() 'में आप उनके मूल्य को ओवरराइट करते हैं तो उन्हें सार्वजनिक बनाने का क्या मतलब है? –
मैं चीजों को निजी में बदल सकता हूं, यह कोई मुद्दा नहीं है। एक पैनिंग मानचित्र में आप आमतौर पर स्क्रीन के आधार पर मानचित्र का आकार निर्धारित करते हैं? जब मोबाइल डिवाइस पर स्क्रीन बदलती है तो यह कैसे काम करता है? –