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

Posted

技术标签:

【中文标题】如何在地图上拖动鼠标进行导航?【英文标题】:How can I drag the mouse on a map to navigate it? 【发布时间】:2021-03-31 02:41:02 【问题描述】:

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

谢谢。

【问题讨论】:

【参考方案1】:

如果你想改变相机位置,你可以简单地用这个代码来做:

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 对象统一使用。

【讨论】:

以上是关于如何在地图上拖动鼠标进行导航?的主要内容,如果未能解决你的问题,请参考以下文章

百度地图怎么设置

如何在按住空格键时仅在Leaflet中启用地图拖动?

如何避免jQuery UI可拖动也触发点击事件[重复]

如何避免jQuery UI可拖动也触发点击事件[重复]

百度地图API怎样实现拖动标注实时更新位置数据

HTML5 Canvas元素绘制地图,如何实现显示鼠标所移动地方名称?