繁体   English   中英

Unity , 拖拽相机的脚本

[英]Unity , script to drag camera

我在 XY 平面中有 2D 网格。 我有以下脚本将相机移动到平面上,相机从 (0,0,-10) 开始。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DragMap : MonoBehaviour {
private float dist;
private Vector3 MouseStart;
private Vector3 derp;

void Start () {
    dist = transform.position.z;  // Distance camera is above map
}

void Update () {
    if (Input.GetMouseButtonDown (2)) {
        MouseStart = new Vector3(Input.mousePosition.x, Input.mousePosition.y, dist);
        MouseStart = Camera.main.ScreenToWorldPoint (MouseStart);
        MouseStart.z = transform.position.z;

    } 
    else if (Input.GetMouseButton (2)) {
        var MouseMove = new Vector3(Input.mousePosition.x, Input.mousePosition.y, dist);
        MouseMove = Camera.main.ScreenToWorldPoint (MouseMove);
        MouseMove.z = transform.position.z;
        transform.position = transform.position - (MouseMove - MouseStart);
    }
}
}

但是我一生都无法弄清楚要改变什么,以便如果我向右拖动鼠标,相机就会向左移动,反之亦然。 同样,如果我向上拖动鼠标,我想向下移动相机,反之亦然。 帮助!

感谢您的任何答复。

- 欧米茄博士。

您需要否定 MouseMove 向量的 x 以仅翻转 x 移动:

MouseMove = new Vector3(-MouseMove.x, MouseMove.y, MouseMove.z);
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DragMap : MonoBehaviour {
private float dist;
private Vector3 MouseStart;
private Vector3 derp;

void Start () {
    dist = transform.position.z;  // Distance camera is above map
}

void Update () {
    if (Input.GetMouseButtonDown (2)) {
        MouseStart = new Vector3(Input.mousePosition.x, Input.mousePosition.y, dist);
        MouseStart = Camera.main.ScreenToWorldPoint (MouseStart);
        MouseStart.z = transform.position.z;

    } 
    else if (Input.GetMouseButton (2)) {
        var MouseMove = new Vector3(Input.mousePosition.x, Input.mousePosition.y, dist);
        MouseMove = Camera.main.ScreenToWorldPoint (MouseMove);
        MouseMove.z = transform.position.z;
        transform.position = transform.position - (MouseMove - MouseStart);
    }
}
}

这里有一个简单的解决方法。 如果您想同时翻转 x 和 y,请将“- (MouseMove - MouseStart)”替换为“+ (MouseMove - MouseStart)”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM