初始化场景时,我在舞台上添加了一组形状。我正在使用
Shape.intersects(point)
检查初始形状与作为抛射物抛出的其他形状之间的碰撞。它工作正常。
但是如果我向组添加新形状,则intersects()方法不会检测射弹与新添加的形状之间的碰撞。新的形状虽然被看作是我的一群形状的孩子。
我也尝试过使用
Kinetic.Stage#getIntersection
但它也无法检测到新形状的碰撞。
任何帮助解决这个问题都将不胜感激!
修改 这是一个重现问题的JSFiddle: http://jsfiddle.net/matdev/3dYHA/
任何人都可以向我解释为什么弹丸不会与第一个圆圈相撞?
这是我的碰撞检测功能:
function checkCollision(meteore) {
var hasCollided = false;
var children = wholePlanet.getChildren();
for (var i = 0; i < children.length; i++) { // for each single shape
var r = children[i];
if (r != planet) {
hasCollided = r.intersects(meteore.getX(), meteore.getY());
if (hasCollided) {
alert("Collision detected !")
if (r.shapeType == meteore.shapeType) {
var fillColor = meteore.getFill();
r.setFill(fillColor);
meteore.remove();
} else {
meteore.remove();
}
break;
}
}
}
return hasCollided;
}