项目需要在GUI上做一些特效,按道理应该是直接做2D序列帧动画,然后GUI播放的,但是介于美术实现的时间原因,决定用例子来做UI特效,但是目前遇到难题是GUI不能加载粒子。
所以决定运用公告板来虚拟一个UI,脚本代码如下:
FaceToCamera.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | using UnityEngine; using System.Collections; using System; public class FaceToCamera : MonoBehaviour { public Camera _camera; public float _z = 5.0F;//纵深 public float _x = 1.0F;//相对中心点x偏移 public float _y = -1.0F;//相对中心点y偏移 void Update() { _camera = Camera.current;//获取当前摄像机 if (!_camera) return; transform.rotation = _camera.transform.rotation;//将对象角度与摄像机统一 transform.position = _camera.transform.position;//将对象移动到摄像机当前位置 transform.Translate(Vector3.forward * _z);//纵向推远,否则看不见 transform.Translate(Vector3.right * _x); transform.Translate(Vector3.down * _y); } } |
以上代码即可完成一个自动匹配摄像机的全方向公告板,即便摄像机来回切换Gameobject也会自动匹配上摄像机。唯一缺陷是该公告板不停刷新,可能会在某些极端情况下出现闪烁。
该Cube仅用于测试,此脚本适用于任意的Gameobject。
BeiTown
2012.12.19