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

时间:2017-10-03 04:55:01

标签: c# unity3d unity5

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

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

Just to show the idea

2 个答案:

答案 0 :(得分:1)

这取决于画布的方向。如果你将它们定位为正方形

| __ |你可以简单地将凸轮放在正确的中间并转换90°

如果您需要不同的距离,请将它们进一步分开,并按照这样的方式进行操作

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

答案 1 :(得分:1)

将此脚本放在gameObject(如相机)上 指定相机画布距离变量。
希望这会有所帮助:

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();
    }
}