大屏中的建筑物上的2d标记始终面向摄像机

本文介绍了一个Unity脚本,该脚本使GameObject能够作为摄像机的公告牌,即始终面向摄像机。此脚本提供了跟随摄像机旋转和平移缩放的功能,并允许调整GameObject的大小比例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using UnityEngine;
using DG.Tweening;
public class Billboard : MonoBehaviour
{

    [Header("跟随镜头旋转")]
    public bool isRotation = false;

    [Header("跟随镜头缩放")]
    public bool isZoom = false;

    [Header("大小比例,为0时,以当前对象的Scale为准")]
    public float size = 0F;

    private Camera mainCamera;//主镜头

    private float _distance;//初始距离,需要在程序运行时立即获取
    private void Start()
    {
        mainCamera = Camera.main;
        //初始设置距离
        _distance = Vector3.Distance(mainCamera.transform.position, transform.position);

        if (size == 0)
        {
            size = transform.localScale.x;
        }
    }
    private void Update()
    {
        //跟随镜头旋转,直接把主镜头的旋转值赋值给公告牌即可
        if (isRotation)
        {
            transform.rotation = Quaternion.Slerp(transform.rotation, mainCamera.transform.rotation, 10*Time.deltaTime);  
        }

        //跟随镜头缩放(缩放镜头设置的镜头的位置),根据公告牌到主镜头的距离来做等距离缩放即可
        if (isZoom)
        {
            float distance = Vector3.Distance(mainCamera.transform.position, transform.position);//不断变化的距离
            var scale = distance / _distance * size;
            transform.DOScale(new Vector3(scale, scale, scale),Time.deltaTime);

        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值