在相机和 canvas 之间保持相同的距离

Keep the same distance between the camera and a canvas

想法是将相机移动到 canvas 前面的某个点。我已经为第一个 canvas 定位了相机,当相机移动到另一个 canvase 时我需要保持这个距离(canvases 是相等的,它们只是有不同的位置和旋转角度)。

所以问题是如何与 canvas 中心保持相同的相机距离?

这取决于 canvas 的方向。如果你把它们定位成正方形


|__|你可以简单地把凸轮放在正中间然后变换 90°

如果您需要不同的距离,请将它们移得更远,然后这样做

/ \ | ○ |在中间的圆圈上,您可以在外缘移动相机。 canvas 方向需要与最近的圆切线平行。您可以通过在中间放置一个假想的(或空的游戏对象)并保持与该对象的距离来使其在曲线上移动。

将此脚本放在游戏对象(如相机)上。
分配 cameracanvasesdistance 变量。
希望这会有所帮助:

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

[ExecuteInEditMode]
public class CanvasPositioner : MonoBehaviour {
    public Camera cam;
    public Canvas[] canvases;
    public float distance = 15;

    private float xPos;
    private float yPos;
    private float zPos;
    private float angle;

    void PositionCanvases(){
        for(int i = 0; i < canvases.Length; i++){
            angle = canvases[i].transform.eulerAngles.y;
            xPos = cam.transform.position.x + distance * Mathf.Sin(Mathf.Deg2Rad* angle);
            yPos = cam.transform.position.y;
            zPos = cam.transform.position.z + distance * Mathf.Cos(Mathf.Deg2Rad * angle);
            canvases[i].transform.position = new Vector3(xPos,yPos,zPos);
        }
    }
    void LateUpdate () {
        PositionCanvases();
    }
}