您当前的位置: 首页 >  unity

程序员正茂

暂无认证

  • 5浏览

    0关注

    283博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity中WorldSpace画布Canvas全屏

程序员正茂 发布时间:2021-05-30 11:43:35 ,浏览量:5

using UnityEngine;

public class AutoResize : MonoBehaviour {
    public Camera cam;
    public Canvas canvas;
	
	// Update is called once per frame
	void Update () {
        //将画布放在相机前方的正中
        Vector3 vec1 = canvas.transform.position - cam.transform.position;
        Vector3 vec2 = Vector3.Project(vec1, cam.transform.forward);
        canvas.transform.position = cam.transform.position + vec2;

        //计算画布的宽高
        float planeDistance = Vector3.Distance(cam.transform.position, canvas.transform.position);
        float camHeight;
        float camWidth;
        if(cam.orthographic)
        {
            camHeight = cam.orthographicSize * 2.0f;
            camWidth = camHeight * cam.aspect;
        }
        else
        {
            camHeight = 2.0f * planeDistance * Mathf.Tan(cam.fieldOfView * 0.5f * Mathf.Deg2Rad);
            camWidth = camHeight * cam.aspect;
        }

        canvas.GetComponent().sizeDelta = new Vector2(camWidth, camHeight);
    }
}

 

关注
打赏
1660743125
查看更多评论
立即登录/注册

微信扫码登录

0.0772s