我正在尝试制作一个泡泡射击游戏演示,其中有 3 种类型的泡泡(鱼、狗和猫)。
它们都是圆形组件。
例如,当我向一组气泡发射狗气泡时,它会爆炸屏幕中存在的所有狗气泡,
有没有一种方法可以让那些靠近被发射气泡击中的气泡的气泡爆炸?
@override
void onCollision(Set<Vector2> intersectionPoints, PositionComponent other) {
super.onCollision(intersectionPoints, other);
if (other is DogBubble) {
if (position.distanceTo(other.position) <= radius + other.radius) {
removeFromParent();
}
}
}
我尝试了几种方法来仅删除被击中的狗,并使用其他方法删除屏幕中的所有狗气泡。
我预计当一个气泡被击中时,靠近它的所有气泡都会被移除。
如果您的
DogBubble
位于 world
中,您可以查询它们并进行检查(如果它们有另一个组件作为父组件,请使用该组件来查询它们)。
另外,使用 onCollisionStart
而不是 onCollision
,因为您没有观察到持续的碰撞。
@override
void onCollision(Set<Vector2> intersectionPoints, PositionComponent other) {
super.onCollision(intersectionPoints, other);
if (other is DogBubble) {
for(final bubble in world.query<DogBubble>()) {
if (position.distanceTo(bubble.position) <= radius + bubble.radius) {
removeFromParent();
}
}
}
}
如果您无权访问组件中的
world
,请将 HasWorldReference
mixin 添加到组件中,它将为您提供组件内部的 world
变量。