如图所示,不使用物理系统去检测两个物体是否碰撞的效果。
注意:两个物体如果一直相交,在Update中处理的时候会一直输出,在实际使用时需要注意相交时的处理。
直接上代码:
检测碰撞使用的是两个节点,节点有自己的宽高和位置。
/*** 判断两个矩形是否碰撞(节点需要有size)* @param node1 碰撞的节点A* @param node2 碰撞的节点B* @returns 是否碰撞*/public rectOverlapWithRect(node1: cc.Node, node2: cc.Node): boolean {let halfWidthA = node1.width / 2;let halfHeightA = node1.height / 2;let xMinA = node1.x - halfWidthA;let xMaxA = node1.x + halfWidthA;let yMinA = node1.y - halfHeightA;let yMaxA = node1.y + halfHeightA;let halfWidthB = node2.width / 2;let halfHeightB = node2.width / 2;let xMinB = node2.x - halfWidthB;let xMaxB = node2.x + halfWidthB;let yMinB = node2.y - halfHeightB;let yMaxB = node2.y + halfHeightB;return xMinA <= xMaxB && xMaxA >= xMinB && yMinA <= yMaxB && yMaxA >= yMinB;}