首页 > 解决方案 > LibGdx 如何仅在演员之间重叠开始时播放声音?

问题描述

我在试着做一个哎哟!仅在球和墙 Actor 之间重叠的开始处播放声音。因此,如果保持重叠,我不希望播放声音,除非演员停止重叠然后再次重叠。

这是我尝试播放 ouch 声音的部分代码:

for (BaseActor wallActor : BaseActor.getList(mainStage, "com.mygdx.game.WallBlock")){
        ball.preventOverlap(wallActor);

        ouch.play();
    }

请提供一个我如何使这项工作的例子。

标签: android-studiolibgdx

解决方案


您没有发布太多代码,但解决方案很简单,在您的球演员中保持布尔重叠,并且只有当它从 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;
    }
}

推荐阅读