我在场景中有一个自上而下的透视摄影机视图。
我正在为WebGL导出,我想以对象的自上而下的视图开始场景,但我需要它在屏幕像素中保持相同的大小,无论宽度/高度如何网页上的Unity播放器。
我想通过向上/向下(沿y轴)移动相机来实现这一目标,但我正在努力计算相机的正确y位置所需的数学。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MainCamera : MonoBehaviour {
private Camera cam;
public Transform target;
public float targetPixelHeight = 150;
void Start () {
cam = GetComponent<Camera>();
}
void Update () {
float newY = /*unknown calculation involving camera position and targetPixelHeight*/;
transform.position = new Vector3(transform.position.x, newY, transform.position.z);
}
}
答案 0 :(得分:0)
您应该查看Unity的RenderTexture
的用法。您可以在场景中的任何位置将摄像机渲染为RenderTexture
,而不是直接渲染到屏幕。
首先创建纹理资源(资产&gt;创建&gt; RenderTexture )。这样,您可以使用Canvas
( GameObject&gt; UI&gt; RawImage 设置RawImage
( GameObject&gt; UI&gt; Canvas ) )这是你想要的确切尺寸(以像素或屏幕空间或你想要的任何参数)。将RenderTexture
指定为RawImage
的纹理。然后,您可以在场景中的任何位置设置“渲染阶段”,它实际上是您要渲染的相机和对象。将相机的targetTexture
设置为您的RenderTexture
,然后您就完成了设置!