creator屏幕坐标转换问题

项目里需要用到屏幕坐标将敌人位置转换为屏幕上的红点指示,经常会出现坐标不准的情况,敌人在左下角,坐标却是右上角,经过仔细排查,代码没有问题,问题出在convertToUINode返回的坐标,
不知道是不是太大的缘故,上面的坐标是对的,屏幕坐标x是-1017803,下一帧突然变成322326,屏幕坐标y也是一样,好像是超过了某个大小限制就屏幕坐标就会错
上面是转换屏幕坐标,下面是限制其在屏幕内,

这里进行数据转换的节点有缩放吗,数据感觉不对,UI 上的数据按理都不应该超过 1000。target 是 3D 节点吗,ui.parent 是谁

是的 target是3d节点 地图比较大 敌人离玩家比较远 这时候把敌人的坐标转换成屏幕坐标是会很大 ui的parent就是场景中的唯一canvas

是120长度*120长度大小的场景

this.mainCamera. 是不是人物旋转,摄像机旋转了?

相机不会旋转的

你方便给我一个 demo 测试一下吗

我一会把重要代码摘出来做一份demo

绿色是敌人 红色是玩家 相机会一直跟随玩家

蓝色点就是指示敌人方向的ui 我在玩家身上加的动画 玩家会横穿地图 离敌人越来越远 一开始 蓝色点的位置都是正确的 当离敌人越来越远的时候 突然位置就错误了 这就是主要问题 demo奉上assets.zip (6.0 KB)

感谢,我测一下看,结果稍后回复

你给的这个 demo 没有出现你说的情况呀

你可以断点调试到 convertToUINode 里看看数据是哪一步转换出了问题,建议调试前先把你这段限制逻辑去掉

蓝色点应该在下面才对,因为红色方块在向前移动 enemy在后面
一开始蓝色点是在屏幕下面的 随着红色方块往前走 距离enemy越来越远 突然蓝色点跑到屏幕上方去了 您那不是这样的效果么

shou 首先看红色方块动画 第一帧在绿色方块前面 最后一帧在更前面 随着红色方块的移动 屏幕上的蓝点指向应该永远在屏幕底部才对 因为红色方块没有机会跑到绿色方块后面,刚开始画面是对的,蓝点在下跑到后面 蓝点突然跑到屏幕上边了 这是不可能发生的 因为红色方块始终在绿色方块前面 如果在这里打log看绿色方块转换的屏幕坐标会发现 当坐标超过某个很大的值 位置就不对了 我说的很详细了 麻烦仔细排查下

ling另外 我的代码只有这些 这4句只是为了让ui在屏幕内显示 如果不修改 直接log出pos的值 就会发现数值不对

似乎不是很符合哦,我这里看到的第一桢的位置和最后一帧,所以是会出现在下面一段时间在下面然后立马跳到顶部的情况,你可以试着把相机拉高来看,我这里的动画和运行时表现时一致的,

兄弟,你这个功能做好了吗?可以给我参考下代码吗?

1赞