/** 是否相交 */
public static IsIntersect(node1: Node, node2: Node): boolean {
//获取 node1 和 node2 的包围框(bounding box)
const rect1 = node1.getComponent(UITransform).getBoundingBox();
const rect2 = node2.getComponent(UITransform).getBoundingBox();
return rect1.intersects(rect2);
}
我是这样写的,但是node是带旋转的,就会出现明明没有碰到,但是判断就说碰到了~·请问大佬们如何决解?
Intersection2D.polygonPolygon(),试试?
你可以给节点添加一个 2D 多边形包围盒,然后在游戏运行时获取包围盒组件的 points 坐标组。这些 points 是会跟随节点的 transform 而变化的。然后就可以用下方类似这种方法去判断是否相交。
(这是 CocosCreator 2.x 版本的用法,需自行升级为 3.x 的)
this.testNode.on(cc.Node.EventType.TOUCH_END, (e)=>{
var p = this.testNode.parent.convertToNodeSpaceAR(e.getLocation());
var points = this.testNode.getComponent(cc.PolygonCollider).points;
var result = cc.Intersection.pointInPolygon(p, points);
if (!result) this.testNode.emit("touch_out");
})



