我的血条的canvas是使用World Space模式,然后点位挂载到小怪里的,小怪会自己走来走去,血条ui也是实时更新,z轴和相机平行。一开始大概是长下面这个样子的,一直忙活背包ui的学习,没怎么看战斗,结果今天发现小怪播动画的时候会导致ui抖动,上网搜了搜也没找到相应的文章,gpt给的答案也不是很好做。自己想了个思路
csharp
UIbar.position = barPoint.position;
// 这样应该的
// UIbar.forward = cam.forward;
// 项目中用的是这个,反向
UIbar.forward = -cam.forward;
我的游戏是一个rpg的类型,小怪只有到可攻击范围内才会播放动画,并且停下来。这个时候我就在想,如果知道了agent.isStopped为true了,就不再更新UI血条的位置,试了一下,完美的解决,不知道是不是最优解,简单的提供一个思路
csharp
#region //"这一段主要为了更新血条ui位置"
// 血条跟随敌人
if (UIbar == null)
{
return;
}
#region "测试血条还会不会闪 应该是不会闪了"
EnemyControler e = GetComponent<EnemyControler>();
if (e == null || e.agent.isStopped) return;
#endregion
UIbar.position = barPoint.position;
// 这样应该的
// UIbar.forward = cam.forward;
// 项目中用的是这个,反向
UIbar.forward = -cam.forward;