当多个相同类型的物体发生碰撞时,如何管理颤动火焰中的碰撞?

问题描述 投票:0回答:1

我正在尝试制作一个泡泡射击游戏演示,其中有 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();
    }
  }
}

我尝试了几种方法来仅删除被击中的狗,并使用其他方法删除屏幕中的所有狗气泡。

我预计当一个气泡被击中时,靠近它的所有气泡都会被移除。

flutter flame
1个回答
0
投票

如果您的

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
变量。

© www.soinside.com 2019 - 2024. All rights reserved.