场景中有一个立方体(3d摄像机渲染)和一个三角图标(2d摄像机渲染)


想实现三角图标设置到立方体的位置(世界坐标转屏幕坐标),如下图,怎么实现,我试了一下getWorldToCameraPoint,getCameraToWorldPoint不太理解最终如何转换

请知道的大佬指点一下
附上测试工程
PosConvertTest.zip (201.1 KB)
场景中有一个立方体(3d摄像机渲染)和一个三角图标(2d摄像机渲染)


想实现三角图标设置到立方体的位置(世界坐标转屏幕坐标),如下图,怎么实现,我试了一下getWorldToCameraPoint,getCameraToWorldPoint不太理解最终如何转换

请知道的大佬指点一下
附上测试工程
PosConvertTest.zip (201.1 KB)
求帮助
一个在原点位置的立方体,用一个只改变了z值的摄像机去渲染,画布大小640*960,使用getWorldToCameraPoint尝试得到3d物体在屏幕坐标系下的坐标(320.25,480),如果按画布的左下角为原点,这个坐标转换几乎正确。
大周末也在加班么
头像好精致啊
用Camera的 worldToScreen试试
源码地址 https://github.com/cocos-creator/engine/blob/b4415d3f111db35eb92e588d63bcb560003ea469/cocos2d/renderer/scene/camera.js#L410
getWorldToCameraPoint这个只是转换到摄像机的坐标系下,并不是你要的屏幕坐标。
你这个旋转是游戏中实时旋转的,位置也有实时更新么。
还是直接编辑器调整了旋转角度重新运行看的效果
好吧我直接下一个2.1.3了
编辑器调整了旋转角度重新运行看的结果
找到原因了,是设计分辨率跟画布尺寸不一致。
onLoad () {
var frameSize = cc.view.getFrameSize();
var designResolution = cc.Canvas.instance.designResolution
var bFitWidth = frameSize.width / frameSize.height < designResolution.width / designResolution.height;
cc.Canvas.instance.fitWidth = bFitWidth;
cc.Canvas.instance.fitHeight = !bFitWidth;
console.log("bFitWidth", bFitWidth, frameSize);
}
start () {
var boxPos = cc.v2(this.box.x,this.box.y);
var canvasNode = cc.Canvas.instance.node
var boxInScreenPos = new cc.Vec3();
this.camera3d._camera.worldToScreen(boxInScreenPos,boxPos,canvasNode.width,canvasNode.height);
this.arrowNode.position = cc.v2(boxInScreenPos.x,boxInScreenPos.y);
}
亲测 旋转也是没问题的哟。满意的话就快告诉我头像出自哪里吧
感谢,这样确实没问题了。头像我也是网上随便找的
你好,我下载了你们的demo,怎么感觉就x轴差不多能对的上呢
对准的是方块的中心点
把 案例 update 里面的 第一句改为:
var boxPos = this.box.parent.convertToWorldSpaceAR(this.box.position);
使用世界坐标就可以了