如题,“3.6.2 世界坐标转锚点坐标应该怎么转”;有找到个inverseTransformPoint方法,通过当前组件里的点击事件调用:onMouseDown(event: EventMouse) {
let pos = event.getLocation();
const posMap: Vec3 = v3(0,0,0);
const posInMap = this.node.inverseTransformPoint(posMap, v3(pos.x, pos.y)); 打印出来的数值根据点击位置期待的是正值,但是是负值
你好,需要使用 UITransform 组件的 convertToNodeSpaceAR 方法转换世界坐标到节点坐标。API 描述可以查看下方链接。
https://docs.cocos.com/creator/3.6/api/zh/class/UITransform?id=convertToNodeSpaceAR
const transform = this.getComponent(UITransform);
const out = transform.convertToNodeSpaceAR(v3(pos.x, pos.y));
有试过的,得到的数据跟 const posInMap = this.node.inverseTransformPoint(posMap, v3(pos.x, pos.y)); 是一样的
你得先把屏幕坐标转成世界坐标
你好,屏幕坐标是 本地坐标系吗?这个应该怎么转?
用ui相机转换,screenToWorld
convertToNodeSpaceAR :将一个 UI 节点世界坐标系下点转换到另一个 UI 节点 (局部) 空间坐标系,这个坐标系以锚点为原点。
所以要先拿到UI节点坐标:let uiPos = event.getUILocation(); 不使用 event.getLocation() 获取到的是 世界节点坐标;
不过还是有一个疑问:非 UI 节点转换到 UI 节点(局部) 空间坐标系,请走 Camera 的 convertToUINode;这个的表述是什么意思,之前理解是世界坐标系,且看接口表述也是this.convertToUINode(target.worldPosition, uiNode.parent, out); 所以尝试了let wordpos = event.getLocation();
const camera = this.getComponent(Camera);
const local = camera.convertToUINode(v3(wordpos.x, wordpos.y), this.node); 但是效果不对,这里很是疑惑,辛苦哪位大佬看到解答下,感谢
我觉得吧,应该对这些技术类的问题实现归纳整理,就这个转换问题,我就看了不下十几个帖子,新人上手根本不知道这些,老手自然不会觉得这有什么,导致新人很难入坑cocos,生态还是不行啊