Unity通过缩放相机保持屏幕上的GameObject大小(以像素为单位)

时间:2017-07-21 12:56:04

标签: c# unity3d camera unity-webgl

我在场景中有一个自上而下的透视摄影机视图。

我正在为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);
    }

}

1 个答案:

答案 0 :(得分:0)

您应该查看Unity的RenderTexture的用法。您可以在场景中的任何位置将摄像机渲染为RenderTexture,而不是直接渲染到屏幕。

首先创建纹理资源(资产&gt;创建&gt; RenderTexture )。这样,您可以使用Canvas GameObject&gt; UI&gt; RawImage 设置RawImage GameObject&gt; UI&gt; Canvas ) )这是你想要的确切尺寸(以像素或屏幕空间或你想要的任何参数)。将RenderTexture指定为RawImage的纹理。然后,您可以在场景中的任何位置设置“渲染阶段”,它实际上是您要渲染的相机和对象。将相机的targetTexture设置为您的RenderTexture,然后您就完成了设置!