如何在地图上拖动鼠标进行导航



我正在制作一个统一的地图游戏。我想在地图上拖动鼠标,让玩家查看地图的不同区域(是的,比如《钢铁之声IV》(。我尝试过使用"onDrag"方法,但找不到合适的代码。有人能链接一些文档或此方法所需的代码吗?

谢谢。

如果您想更改相机位置,只需使用以下代码即可:

public float dragSpeed = 2;
private Vector3 dragOrigin;

void Update()
{
if (Input.GetMouseButtonDown(0))
{
dragOrigin = Input.mousePosition;
return;
}
if (!Input.GetMouseButton(0)) return;
Vector3 pos = Camera.main.ScreenToViewportPoint(dragOrigin - Input.mousePosition);
Vector3 move = new Vector3(pos.x * dragSpeed, 0, pos.y * dragSpeed);
transform.Translate(move, Space.World);
}

有了这个,你就可以开始做其他事情了。

如果你想移动地图而不是相机,你也可以尝试:

private bool isDragging;
public void OnMouseDown()
{
isDragging = true;
}
public void OnMouseUp()
{
isDragging = false;
}
void Update()
{
if (isDragging) {
Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
transform.Translate(mousePosition);
}
}

这就像拖放任何统一的2d对象一样。

另一个答案不起作用,因为按住按钮时地图也应该移动。。这是修复

public float dragSpeed = 2;
private Vector3 dragOrigin;
private bool dragStarted = false;
if (Input.GetMouseButtonDown(1))
{
dragOrigin = Input.mousePosition;
dragStarted = true;
}
if (Input.GetMouseButtonUp(1))
{
dragStarted = false;
return;
}
if (dragStarted)
{
Vector3 pos = main_camera.ScreenToViewportPoint(dragOrigin - Input.mousePosition);
Vector3 move = new Vector3(pos.x * dragSpeed, 0, pos.y * dragSpeed);
main_camera.transform.Translate(move, Space.World);
}

这也假设你的相机指向下方或朝北。。

最新更新