首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理同时发生的碰撞?

如何处理同时发生的碰撞?
EN

Stack Overflow用户
提问于 2013-09-02 01:44:31
回答 1查看 128关注 0票数 0

我正在用libGosu和Chingu做一个简单的小行星改造。类似于最初的小行星,当一颗子弹击中一颗大流星时,流星会分裂成两颗较小的流星。当玩家完成武器升级时,它可以同时发射多颗子弹。有时两颗子弹同时击中同一颗小行星,导致它撞成四颗较小的流星,而不是预期的两颗。在有两个同时碰撞的情况下,清谷有没有办法抵消其中一个碰撞?我现在就是这样设置的:

代码语言:javascript
复制
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

当两颗子弹同时击中同一颗流星时,有没有办法省略多余流星的创建?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-04 10:55:34

您需要在每个块的末尾添加“断开”,以防止在您与第一个子弹击中流星而流星不再存在之后进行碰撞检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18564660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档