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

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

谢谢。

【问题讨论】:

    标签: unity3d draggable


    【解决方案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 对象统一使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 2012-01-06
      相关资源
      最近更新 更多