gpt4 book ai didi

unity3d - 如何使 map 的边界和该 map 的平移相同?

转载 作者:行者123 更新时间:2023-12-04 15:31:46 24 4
gpt4 key购买 nike

我使用的 map 比我查看的屏幕大。因此,我需要能够平移该 map 。我在夹紧相机和 map 时遇到问题。我希望能够使用图像的尺寸作为夹具的宽度和高度。问题是单位。

图像为 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;
}

}

任何帮助将不胜感激。

最佳答案

您可以使用 Unity UI - Scroll Rect 执行此操作。

退房 Unity UI - Scroll Rect - Introduction

关于unity3d - 如何使 map 的边界和该 map 的平移相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39605643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com