如何在3D场景里加2D精灵使其跟随3D物体移动

除了使用在update里面移动2D精灵对应3D的位置

我试过直接在3D物体下创建UI,但是移动的时候视角不对么,没有跟随
还有其他的方法么

不支持在 3D 下创建 UI,3D 渲染管线里面是没有包含 UI 的渲染流程的

这种按理说是有方法实现的啊,threejs都有2D精灵的3D类型

嗯,我们目前没有支持,其实主要是为了避免被滥用导致性能问题

嗯,顺便反馈一个小问题,如果是在canvas下面创建UI,直接update映射对应3D物体的位置的话,canvas下的UI会出现抖动的情况,这似乎就是2.0版本一直有的update的抖动问题了

确实存在这样的问题,camera 节点的位置同步变了,但是它实际做计算的相机还没有更新,这个时候渲染计算就出现了偏移,目前的做法是需要用户去主动更新相机组件的相机

更新相机的坐标位置还是?

怎么更新相机组件的相机?刚好遇到这个问题,将3D物体映射到Canvas的Sprite去做血条显示
相机要跟随该物体,发现更新顺序不管怎么放,都会抖动
物体和相机倒是稳稳的同步

现在解决了吗?

按官方例子的方式,摄像机直接放在角色下面,才不抖动。。。其他怎么放或者用lateUpdate都抖

目前可以在设置转换坐标的时候用 hack 的方式,强制对 cameracomp._camera.update(),这个在 1.0.2 做了通用组件,到时候可以直接使用

赞,完美解决
我先弄完手头这个小游戏再等新版本咯~

lateUpdate里面同步位置应该也可以吧?

UI界面放个3D模型现在支持了吗? 简单测试了下好像不行

顺带放一张血条跟随的效果动图,稳稳当当

1赞

UIModelComponent 组件是放在模型节点上带有 ModelComponent 之类组件的节点上吗

这样是可以的。 开始没注意到这个细节。 但是UI上3D模型无法享受到场景光照(显得很暗)。 这样说的是不是只能在多一套材质才行。

1赞

使用 unlit 材质就行了

你是说子物体来做血条(比如用cube)
然后update去时刻对着相机吗?
这种做法我试过,但有个麻烦的地方我没解决,就是血条角度问题,因为相机可能是各种奇奇怪怪的位置,cube的角度要旋转匹配相机的正上方,我算起来有点乱,就暂时放弃了,改用UI层做映射