[Unity]如何让世界坐标中的UI物体永远面向相机

发布时间 2023-07-21 23:48:56作者: takoyak1

世界坐标中的UI物体不面向相机时效果如图所示:
image

左边的两个进度条是这个样子的,朝向他们自己的“面向”,和相机是不同步的,看起来比较奇怪
这个相机角度比较好,如果相机角度更***钻一点,两个进度条会再窄一些,效果就很差了
然后让UI物体在相机里看起来永远是“面向相机”的效果如下图所示:
image

可以看到除了透视造成的近大远小之外,两个进度条都是看向相机的,看起来会正常很多
然后实现这种效果的代码是这样的:

private void Update() {
	transform.rotation = Quaternion.LookRotation(cam.transform.forward);
}

就,为了实现一个“UI组件永远看向相机”这样一个效果,实际上代码上的逻辑是UI组件永远面向和相机相同的方向,相机向前下方看过去,UI组件也向前下方看过去,这样相机从后面看到UI组件的时候,UI组件和相机的朝向是完全一致的,也就实现了“看向相机”的视觉效果
而如果尝试直接让UI组件LookAt相机的话,实际上两个组件的朝向是完全相反的,会导致这个进度条从右往左推进度,就像两个人面对面一样,对面的人的左手实际上在我的右边,进度条从左往右推,在相机看起来就是一个从右往左推的进度条,会出现这样的问题。
偶然遇到的,记录一下。