0

我正在使用 libGosu 和 Chingu 进行简单的 Asteroids 重制。与最初的小行星类似,当一颗子弹击中一颗大流星时,流星会分裂成两颗较小的流星。当玩家完成武器升级后,可以同时发射多颗子弹。有时两颗子弹同时击中同一颗小行星,使其分裂成四颗较小的流星,而不是预期的两颗。当有两个同时发生的碰撞时,Chingu 有没有办法取消其中一个碰撞?这就是我目前的设置方式:

Bullet.each_collision(Meteor1) do |bullet, meteor|
  Explosion.create(:x => meteor.x, :y => meteor.y)
  Meteor2.create(:x => meteor.x, :y => meteor.y)
  Meteor2.create(:x => meteor.x, :y => meteor.y)
  meteor.destroy
  bullet.destroy
  @score += 100
  Sound["media/audio/explosion.ogg"].play(0.2)
end
Bullet.each_collision(Meteor2) do |bullet, meteor|
  Explosion.create(:x => meteor.x, :y => meteor.y)
  Meteor3.create(:x => meteor.x, :y => meteor.y)
  Meteor3.create(:x => meteor.x, :y => meteor.y)
  meteor.destroy
  bullet.destroy
  @score += 100
  Sound["media/audio/asplode.ogg"].play(0.2)
end
Bullet.each_collision(Meteor3) do |bullet, meteor|
  Explosion.create(:x => meteor.x, :y => meteor.y)
  meteor.destroy
  bullet.destroy
  @score += 100
  Sound["media/audio/asplode.ogg"].play(0.2)
end

当两颗子弹同时击中同一颗流星时,有没有办法避免产生多余的流星?

4

1 回答 1

0

您需要在每个块的末尾添加“break”,以防止在您用第一颗子弹击中流星并且流星不再存在后检查碰撞。

于 2013-09-04T10:55:34.387 回答