ppt模板下载免费版网站,wordpress title标签,郑州建设信息,企业网站的建设对于网络品牌的塑造作用前言
如题的需求#xff0c;其实可以通过使用UI替代场景中的图标来实现#xff0c;不过这样UI的处理稍微麻烦#xff0c;而且需要在图标上添加粒子特效使用SpriteRender更方便快捷。这里就根据相机离图标的位置来计算图标的缩放大小即可。这样基本保持了图标的大小#xf…前言
如题的需求其实可以通过使用UI替代场景中的图标来实现不过这样UI的处理稍微麻烦而且需要在图标上添加粒子特效使用SpriteRender更方便快捷。这里就根据相机离图标的位置来计算图标的缩放大小即可。这样基本保持了图标的大小不会出现远小近大。从而避免了相机离得远图标点不中或者不好点击的问题。 默认效果
动态缩放效果
实现
这个功能的实现还有个功能就是让图标永远面向相机这个可以使用LookAT或者使用如下代码
transform.forward Camera.main.transform.forward;
transform.rotation Camera.main.transform.rotation;这个脚本需要主相机不然会报错。
接下来就是编写缩放的脚本了(ScaleByCamDistance):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ScaleByCamDistance : MonoBehaviour
{[Header(距离缩放系数)]public float scaleFactor 0.05f;[Header(最大缩放值)]public float MaxScale 2;[Header(最小缩放值)]public float MinScale .5f;[Header(缩放相机(默认为主相机))]public Camera cam;float Dis;private void Awake(){if (cam null)cam Camera.main;if (cam null)Debug.LogWarning(相机未赋值主相机也未找到);}private void FixedUpdate(){if (cam ! null){Dis Vector3.Distance(transform.position, cam.transform.position) * scaleFactor;transform.localScale Vector3.one * (Dis MinScale ? MinScale : Dis MaxScale ? MaxScale : Dis);}}}如上的脚本添加到对象上组件的Inspector会有如下配置界面
其中距离缩放系数scaleFactor是距离的缩放系数这个数值一般不用更改除非你的场景比例差距有点大。 MaxScale、MinScale。最大缩放值、最小缩放值是用于缩放边界判定的如果需要图标在不同距离都基本恒定大小就需要把这两个的值设置到一个很大的区间。 cam是用于计算的相机如果不赋值它默认是主相机如果不赋值也没有主相机那么这个功能是无效的。