我正在用Phaser 3编写一个游戏,我有一个移动的手推车。我为手推车添加了一个声音,但是无论玩家离它有多远,只要手推车开始移动,它就可以听到。我想设置手推车的音量,如果玩家离它很远,声音基本上会被静音,并且它的音量会根据它的接近程度而增加/减少。
我找到了this link,并尝试将其应用到我的代码中,但没有成功,所以我尝试对其进行一些修改,看看是否可以使其工作。
我现在的代码是这样的:
preload() {
this.load.audio("cartSound", "assets/audios/cart.mp3");
}
startCart1Movement() {
this.startCartSound();
}
startCartSound() {
this.distanceThreshold = 400;
this.distanceToObject = Phaser.Math.Distance.Between(
this.player.x, this.player.y, this.cart1.x, this.cart1.y
);
this.cartSound.setVolume(
1 - (this.distanceToObject / this.distanceThreshold)
);
this.cartSound.play();
}
startCartSound
函数是完整读取的,因为如果我在末尾添加一个console.log
,计算机将读取它,但cart声音仍然没有变化。
有人能帮我吗?先谢谢你了。
1条答案
按热度按时间rqmkfv5c1#
这个例子应该可以在这里工作,一个使用或多或少相同代码的工作例子,它工作了。只要点击画布,你应该听到不同。(也许对你来说,400px阈值太小或太大,声音差异无法生效)
newVolume = Math.max(newVolume, 0);