java - libGDX - 以有效的方式制造脚步

标签 java android libgdx

在使用 libGDX 开发的 2D 游戏中,制作玩家脚步声的最有效方法是什么,例如 -

if(player.isWalking) {
  Timer.schedule(new Task(){
    public void run(){
      play(single_footstep);
    }
  }, 0.5f);
}

这段代码根本没有效果..实际上它没有用,声音很糟糕,无论你用多少延迟值玩,它仍然没有效果。

顺便说一句 - 我正在使用 libgdx 的 Timer 类,它与实用类非常相似。

也许您有更好的想法可以实现?我是 libGDX 的新手,所以我可能遗漏了一些东西。

提前致谢:)

最佳答案

该代码只是在您的绘制循环中吗?如果是这样,它将安排声音在每一帧播放,因此您每秒将开始播放 30 或 60 个声音(每个声音在您调用时都有延迟,但仍会同时播放)。您需要确保一旦您安排了任务,您就不会再次执行它,直到您准备好再次播放声音。

我会在没有安排的情况下进行。像这样:

if (player.isWalking){
    mTimeToNextStep -= deltaTime;
    if (mTimeToNextStep < 0){
        play(single_footstep);
        while (mTimeToNextStep < 0){ //in case of a really slow frame, 
                                    //make sure we don't fall too far behind
            mTimeToNextStep += TIME_BETWEEN_STEP_SOUNDS;
        }
    }
} else {
    mTimeToNextStep = 0; //or whatever delay you want for the first sound when
                         //you start walking
}

关于java - libGDX - 以有效的方式制造脚步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002746/

相关文章:

Android GLSurfaceView 通过 MediaPlayer-SurfaceView

android - Scene2d如何处理触摸的 Actor ?(LibGDX)

java - libgdx 中重叠时出现 NullPointerException (Java)

java - 如何在 JPA 和 Hibernate 中从具有大量子项的 @ManyToMany 关系中删除子对象

java - 如何将应用程序置于停止状态而不破坏后退按钮?

java - Java 中的 Windows 资源管理器上下文菜单

android - 是否有关于如何命名资源的约定?

android - 找不到从方法 XXX.<YYY> 引用的类 XXX

java - GMavenPlus - 如何在 gmavenplus-plugin 执行的脚本中获取 Maven 属性值

java - 如果字符串对象被实习那么为什么改变一个不影响其他