面向论坛编程的练习生又来问关于状态条跟随3d物体的问题了

先说说我目前的做法吧,
我将3d物体上的UI(血条,蓝条等等…)全放在2d摄像机下的,ui跟随物体移动的方式就是将3d物体的坐标转换为2d屏幕坐标,事实上这个过程会经历多次转换。

  1. 将3d节点的坐标转换到世界空间坐标系。

  2. 将坐标从世界坐标系转化到屏幕坐标系。

  3. 将一个点转换到节点 (局部) 空间坐标系。

**????**what,就这么一个简单的操作居然要经历如此多次的转换,导致这些不必要计算开销我想多半是我姿势不对吧。
论坛里的各位大佬你们是一种怎样的姿势来做这些操作的呢,请务必教教我。


ps:
我尝试过将ui跟模型放在同一父节点下,并将ui切换为3d节点,可是透视关系始终调整不好,
还有一种方式,用触点位置直接做差值计算。

你这个 是怎么 转化的哦 , 你ui 放 3d 里面的话 直接 对着摄像头 透视就没问题了

哦 知道了, 透视的话 直接 对着摄像机就可以了

老铁方便留个qq问个问题吗?

qq956833404,你直接帖子里问呀

你这个是3d的开发还是2.4的?

1619317278(1)
如果是2.4的话,这么转换出来的坐标不对是什么情况?望大佬解惑

  1. 将一个世界坐标系下的点转换到屏幕坐标系下 camera.getWorldToScreenPoint
  2. 将一个点转换到节点 (局部) 空间坐标系 node.convertToNodeSpaceAR

这里的摄像机指你的3d摄像机

:rofl:我就是这么做的啊,可是转换出来的坐标差的太大了~

cc.Canvas.instance.node.convertToNodeSpaceAR(this.camera3D.getWorldToScreenPoint(v));

你的qq我搜不到啊~你方便加一下我么?2690628842

搞定了非常感谢~