在投币、杀戮和通电声音之间有 300 毫秒的延迟

Posted

技术标签:

【中文标题】在投币、杀戮和通电声音之间有 300 毫秒的延迟【英文标题】:Give 300ms delay between coin, kill and power up sounds 【发布时间】:2014-09-02 00:20:22 【问题描述】:

我正在开发一款包含硬币、能量提升和死亡音效的游戏。游戏的常态。我的音响工程师告诉我,为了让它听起来不错,我需要在所有声音之间有 300 毫秒的延迟,这样它们就不会相互重叠播放,从而使声音更大。

例如,如果您在 300 毫秒内捡到多个硬币,我不想为所有硬币播放声音。

这是我播放随机死亡声音的方式。但是如何添加延迟?

int random = rand() % 4;

switch (random) 
    case 0:
        CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect( enemyDeathSoundName );
        break;
    case 1:
        CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect( enemyDeathSoundName2 );
        break;
    case 2:
        CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect( enemyDeathSoundName3 );
        break;
    case 3:
        CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect( enemyDeathSoundName4 );
        break;

    default:
        break;

有人知道这怎么可能吗?

【问题讨论】:

这可能会有所帮助:***.com/questions/14987061/… @Patrick 我正在使用cocos2d-x, so I don't have those Objective-C` 可用的方法。 【参考方案1】:

使用一些现有节点,并播放延迟时间动作。喜欢

node->runAction(Sequence.create(DelayTime.create(0.5), CallFunc.create(playSound)));

然后在函数 playSound 中播放声音。

如果你没有更好的选择,这是一个技巧

【讨论】:

但是如果两个同时被提示会有帮助吗?他们仍然会在彼此之上玩耍......【参考方案2】:

您可以在数组中添加事件(作为动作)并将动作作为序列运行,例如,您为数组中的一个敌人添加事件,如果您杀死 3 个敌人,则在数组中添加多个动作,并使用 DelayTime 和在序列中运行。

您可以在此处查看如何添加动作数组(向量):

http://www.cocos2d-x.org/reference/native-cpp/V3.0rc1/d7/d30/classcocos2d_1_1_sequence.html

【讨论】:

以上是关于在投币、杀戮和通电声音之间有 300 毫秒的延迟的主要内容,如果未能解决你的问题,请参考以下文章

Pygame - 声音延迟

vue 解决300毫秒延迟

解决在移动端上 click事件延迟300 毫秒的问题 fastclick.js

将 Tailwind 加载到 Gatsby 站点时延迟 300 毫秒

发送和接收意图之间的巨大延迟

无延迟播放声音 iOS