【发布时间】:2021-03-31 02:41:02
【问题描述】:
我正在统一制作地图游戏。我想在地图上拖动鼠标,让玩家可以查看地图的不同区域(是的,比如《钢铁之声 4》)。我曾尝试使用“onDrag”方法,但找不到合适的代码。有人可以链接一些文档或此方法所需的代码吗?
谢谢。
【问题讨论】:
我正在统一制作地图游戏。我想在地图上拖动鼠标,让玩家可以查看地图的不同区域(是的,比如《钢铁之声 4》)。我曾尝试使用“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 对象统一使用。
【讨论】: