android-studio - LibGdx 如何仅在演员之间重叠开始时播放声音?
问题描述
我在试着做一个哎哟!仅在球和墙 Actor 之间重叠的开始处播放声音。因此,如果保持重叠,我不希望播放声音,除非演员停止重叠然后再次重叠。
这是我尝试播放 ouch 声音的部分代码:
for (BaseActor wallActor : BaseActor.getList(mainStage, "com.mygdx.game.WallBlock")){
ball.preventOverlap(wallActor);
ouch.play();
}
请提供一个我如何使这项工作的例子。
解决方案
您没有发布太多代码,但解决方案很简单,在您的球演员中保持布尔重叠,并且只有当它从 false 变为 true 时才会播放声音。
伪代码:
public class Ball
{
private boolean overlapping;
private YourGame game; //could be a screen too or simply a world object
// other ball fields ...
public void update()
{
boolean wasOverlapping = overlapping;
overlapping = isOverlapping();
if(!wasOverlapping && overlapping)
ouch.play();
if(!overlapping && wasOverlapping)
{
//you could also play a sound when it stops overlapping here!
}
}
private boolean isOverlapping()
{
for(Wall wall : game.getWalls())
{
if(wall.overlap(this)) //this refers to the ball
return true;
}
return false;
}
}
推荐阅读
- javascript - 如何正确构建此 MongoDB 排序查询?
- r - 点在 purrr:map 函数中的公式中的作用
- perl - 如何找到模块名称到不透明指针的 DynaLoader 映射?
- ios - 上一个单选按钮状态未清除目标 c
- git - Maven 和 Spring Boot - 在调试时检查另一个分支
- java - 我的应用程序聊天android中的重复用户
- database - 创建用户,那么现在谁拥有创建的表?
- python - 将数据从 Zoho Analytics 导入 Python
- google-app-engine - 是否可以在 App Engine 标准环境中使用 Google Cloud CDN?
- node.js - Mongoose - 使本地数据库与远程数据库保持同步