在碰撞过程中只播放一次声音

时间:2013-01-27 15:57:22

标签: android andengine

所以最近我认为我找到了一个解决方案,但发现当我将多个相同的对象类型添加到关卡时它不起作用。

我正在做的是迭代我不同的对象列表并检查它们中的任何一个是否与播放器发生碰撞,如果它们是我播放与播放器发生碰撞的声音然后我为声音设置布尔值为真,意味着声音现在播放。

当它们没有发生碰撞或者如果正在迭代的当前对象没有与玩家碰撞时,我将声音布尔值设置为假。正如你可能看到的,当有多个相同的对象被添加时会出现问题,因为其中一个将布尔值设置为false,只要玩家与一个碰撞,声音就会反复播放对象。

所以我已经没有解决方案来解决这个问题,所以我正在寻求帮助。

感谢任何能提供帮助的人。

2 个答案:

答案 0 :(得分:0)

在检测到碰撞时将其设置为true,仅在声音播放完毕后将其设置为false

答案 1 :(得分:0)

像soundmanager类这样的东西怎么样?而不是告诉声音播放,告诉声音管理员播放那个声音。然后管理员播放声音并忽略播放该声音的其他请求,直到完成为止。根据jmr的建议,这里的关键是当他没有碰撞时不将boolean设置为false,当管理员将声音识别为完成播放时,它将被设置为false。

顺便说一句,这样做可以在管理器中允许额外的逻辑。如果第二个请求是在第一个请求的中途,那么您可以允许管理员两次播放相同的声音,而不是一次只将其限制为一个声音。或者对于某些声音,您可能希望它们排队等待轮到他们播放。