convertToWorldSpaceAR(cc.p(0,0))
时间: 2024-04-17 22:23:47 浏览: 115
convertToWorldSpaceAR(cc.p(0,0))是一个Cocos Creator中的方法,用于将节点的本地坐标转换为世界坐标。它的作用是将节点相对于锚点的位置转换为相对于整个屏幕的位置。
具体而言,convertToWorldSpaceAR(cc.p(0,0))会返回节点锚点位置为(0,0)时的世界坐标位置。这个方法中的AR表示的是相对锚点的坐标系(Anchor Relative),即以节点锚点作为坐标原点。
注意,这个方法需要在节点已经被添加到场景中并渲染之后才能正确使用。
相关问题
convertToWorldSpaceAR(cc.p(0,0))是一个Cocos Creator中的方法,用于将节点的本地坐标转换为世界坐标。它的作用是将节点相对于锚点的位置转换为相对于整个屏幕的位置。 具体而言,convertToWorldSpaceAR(cc.p(0,0))会返回节点锚点位置为(0,0)时的世界坐标位置。这个方法中的AR表示的是相对锚点的坐标系(Anchor Relative),即以节点锚点作为坐标原点。 注意,这个方法需要在节点已经被添加到场景中并渲染之后才能正确使用。举个例子
当你在Cocos Creator中创建一个精灵节点,并将其添加到场景中后,你可以使用convertToWorldSpaceAR(cc.p(0,0))来获取该节点锚点位置为(0,0)时的世界坐标位置。
举个例子,假设你创建了一个名为"sprite"的精灵节点,并将其添加到场景中。你可以使用以下代码来获取该节点锚点位置为(0,0)时的世界坐标位置:
```javascript
var worldPos = sprite.convertToWorldSpaceAR(cc.Vec2.ZERO);
console.log(worldPos);
```
这将在控制台输出节点锚点位置为(0,0)时的世界坐标位置。请确保在节点添加到场景并进行渲染之后再调用该方法,以获得正确的结果。
registerEvent () { let endPoint = cc.v2(0,0) let startPoint = cc.v2(0,0) this.node.on(cc.Node.EventType.TOUCH_MOVE, (e) => { startPoint = e.getStartLocation(); endPoint = e.getLocation(); const distance = startPoint.sub(endPoint).mag(); if (distance <= 300) { this.draw.clear(); this.draw.moveTo(startPoint.x, startPoint.y); this.draw.lineTo(e.getLocationX(), e.getLocationY()); this.draw.stroke(); } }, this); this.node.on(cc.Node.EventType.TOUCH_END, (e) => { this.draw.clear(); let lineStart = startPoint.clone(); // 保存 300 线段的起点 let lineEnd = endPoint.clone(); // 保存 300 线段的终点 this.cut(lineStart, lineEnd); // 在 cut() 方法中处理 300 线段 }, this); } cut(pOne,pTwo){ let ropeJoints: cc.RopeJoint[] = [] if(this.chapterOne.active === true){ //ropeJoints = cc.director.getScene().getComponentsInChildren(cc.RopeJoint); ropeJoints =this.chapterOne.getComponentsInChildren(cc.RopeJoint); } else if(this.chapterTwo.active === true) { //ropeJoints = cc.director.getScene().getComponentsInChildren(cc.RopeJoint); ropeJoints =this.chapterTwo.getComponentsInChildren(cc.RopeJoint); } ropeJoints.forEach((item) => { if(item.node.width ==10&&item.node.height==10){ let lineP1 = pOne; // 线段起点 let lineP2 = pTwo; // 线段终点 let rectPoint = cc.v2(item.node.x-5, item.node.y-5) let rectWorldPoint = item.node.convertToWorldSpaceAR(rectPoint) let rect = cc.rect(rectWorldPoint.x,rectWorldPoint.y, 20, 20); // 矩形,左下角坐标为(5,5),宽高为10 let isIntersect = cc.Intersection.lineRect(lineP1, lineP2, rect); console.log(isIntersect); // 输出 true 或 false if(isIntersect== true){ item.node.parent.active = false } } }); }
这段代码实现了一个简单的画线和切割功能。当手指在屏幕上滑动时,会在画布上绘制一条直线;当手指离开屏幕时,会根据画线的起点和终点计算出一条线段,并将该线段和所有的 `cc.RopeJoint` 组件进行碰撞检测,如果检测到碰撞则将相应的节点隐藏。
其中,`registerEvent()` 方法用于注册触摸事件,`cut()` 方法用于进行碰撞检测。
需要注意的是,这段代码仅适用于场景中只有 `cc.RopeJoint` 组件的情况,如果场景中还有其他类型的组件,需要修改代码以区分不同类型的组件。另外,代码中的一些变量和方法没有给出定义,需要根据具体情况进行修改。
阅读全文