creator3d 中把3D坐标转换成UI坐标

想要实现的效果:3D角色头顶有一个血条,不过3d模型如何移动,血条都能正确的显示在角色顶部。血条是绘制在2DUI下的。也就是3D角色直接添加到scene下的一个节点,而血条是在scene下的包含canvas组件的一个节点。这个时候血条的坐标该怎么获取呢?

1赞

可以看下我们的测试例 https://github.com/cocos-creator/test-cases-3d 里的 coordinate-ui-3d

没找到这个案例啊,在哪个文件夹下?

直接搜啊,这个场景 coordinate-ui-3d

找到了

官方能不能出一个3D的摇杆的教程啊

有的,你看下 https://github.com/cocos-creator/demo-ui 里有

this.D3Node.getWorldPosition(_v3_0);
this.mainCamera.convertToUINode(_v3_0, this.UINode.parent, _v3_0);
this.UINode.setPosition(_v3_0);

1赞

mark

版本3.0,转换的坐标只跟D3Node的坐标有关,摄像机旋转之后,位置就不对了,请问怎么解决?



不对是指什么呢,我这里没有看很明白,展示的代码看起来没有什么问题

Button的位置没在cube上啊

知道问题了,代码放在start里没用,第一帧执行完之前,Camera的_matViewProj都是初始单位矩阵

你在做计算的时候手动执行一次 camera.update 就能更新相机计算相关的矩阵了