【问题标题】:How to pan in unity 3d space?如何在统一的 3d 空间中平移?
【发布时间】:2021-10-17 03:13:18
【问题描述】:

我有两个附加到我的主相机对象的 c# 脚本。这些脚本围绕我的游戏对象旋转,还允许我放大和缩小。但我正在尝试平移。我该怎么做?

我有一些附加到我的主相机对象的类。它是旋转和放大和缩小。但它非常有限。我想通过游戏平移。我该怎么做?

这是我的旋转代码:

    [SerializeField] private Camera cam;
    private Vector3 previousPosition;

    void Update()
    {
        Vector3 eulerAngles = transform.rotation.eulerAngles;
        eulerAngles = new Vector3(0, eulerAngles.y, 0);
        transform.rotation = Quaternion.Euler(eulerAngles);
        if (Input.GetMouseButtonDown(2))
        {
            previousPosition = cam.ScreenToViewportPoint(Input.mousePosition);
        }

        if (Input.GetKey(KeyCode.LeftShift) && Input.GetMouseButton(2))
        {
            Vector3 direction = previousPosition - cam.ScreenToViewportPoint(Input.mousePosition);
            cam.transform.RotateAround(new Vector3(), new Vector3(1, 0, 0), direction.y * 45);
            cam.transform.RotateAround(new Vector3(), new Vector3(0, 1, 0), -direction.x * 360);
            // cam.transform.RotateAround(new Vector3(), new Vector3(1, 0, 0), -direction.y * 360);

            previousPosition = cam.ScreenToViewportPoint(Input.mousePosition);
        }
    }

这是我的缩放代码:

    [SerializeField] private Camera cam;

    void Update()
    {
        if (Input.GetAxis("Mouse ScrollWheel") > 0)
        {
            cam.GetComponent<Camera>().fieldOfView--;
        }
        if (Input.GetAxis("Mouse ScrollWheel") < 0)
        {
            cam.GetComponent<Camera>().fieldOfView++;
        }
    }

正如我所提到的,它们都连接到我的主摄像头。这些脚本的问题是我想平移而这些脚本不这样做。如何围绕我的游戏对象平移我的相机?

【问题讨论】:

    标签: c# unity3d panning


    【解决方案1】:

    就这样做

    transform.Translate(direction * Time.deltaTime);
    

    其中direction是一个Vector3,你想要平移的方向。

    问题是,您的旋转脚本围绕位置 0,0,0 旋转。因此,一旦您从那里移动相机,旋转将无法正常工作。您必须更改旋转脚本才能使用正确的位置。

    与实际平移相机相比,您会发现拥有一个空的游戏对象并让相机跟随该游戏对象更容易。当您想要移动相机时平移该对象,并使用对象的位置并围绕它旋转相机,假设您不希望相机跟随玩家。

    【讨论】:

      猜你喜欢
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2021-05-22
      • 1970-01-01
      相关资源
      最近更新 更多