- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用SpriteKit构建我的第一个项目,但我无法弄清楚这部分。
我的项目包括飞入屏幕的敌方直升机。每个敌人播放大约14秒长的声音文件。这不是循环。它包括敌人进入屏幕之前接近的声音,以及在屏幕上移动时发出的更多声音。问题是,当我杀死其中一架直升机时,即使将敌方直升机节点从场景中移开,声音仍会继续播放。
我尝试使用playSoundFileNamed操作,但我知道这些操作无法停止。
我尝试使用SoundManager,但由于所有敌人都具有相同的文件ID,所以如果我停止一个文件,它会停止所有文件,即使仍然在屏幕上的文件也是如此。
我阅读了我应该使用OpenAL的信息,但是找不到能说明如何在播放的每种声音中添加某种ID的信息,以了解停止哪种声音。
与AVAudioPlayer相同。我尝试为每个敌人创建一个播放器,但由于某种原因,runBlock SKAction只会忽略此代码,并且从不播放声音。奇怪的。我还读过AVAudioPlayer比播放声音FX更适合播放背景音乐。
是否有某种声音引擎可以帮助解决此问题?
最佳答案
我能够解决它,将所有音频播放器排列在一起。这是代码:
首先,您创建一个NSMutableArray来跟踪所有玩家(称为“playerArray”)。然后,每个SKSpriteNode在添加到场景中时都会得到自己的播放器:
NSError *error;
NSURL * backgroundSound = [[NSBundle mainBundle] URLForResource:@"coptersound" withExtension:@"mp3"];
AVAudioPlayer *copterPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:backgroundSound error:&error];
copterPlayer.numberOfLoops = 1;
copterPlayer.delegate = self;
[copterPlayer prepareToPlay];
SKAction *moveCopter = [SKAction moveToX:(-10 - enemy.size.width) duration:14];
SKAction *copterSound = [SKAction runBlock:^{
[playerArray addObject:copterPlayer];
[copterPlayer play];
[enemy.userData setValue:copterPlayer forKeyPath:@"player"];
}];
SKAction *moveGroup = [SKAction group:@[copterSound, moveCopter]];
[[enemy.userData objectForKey:@"player"] stop];
[playerArray removeObject:[enemy.userData objectForKey:@"player"]];
for(AVAudioPlayer *a in playerArray) {
[a pause];
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {
[playerArray removeObject:player];
}
关于audio - SpriteKit-当敌人被杀死时如何停止声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23146059/
好的,这就是我的错误:'Enemy' 未在此范围内声明。错误在 map.h 文件中,即使 map.h 包含 enemy.h,如图所示 #ifndef MAP_H_INCLUDED #define MA
这个问题已经有答案了: How to make enemy follow player in pygame? (2 个回答) Enemy doesn't follow player (pygame)
我试图让我的 Canvas 游戏中的 Sprite 不断向玩家移动,直到它发生碰撞。执行此操作的相关函数是 update() 函数: Enemy.prototype.update = function
我在无休止的运行游戏中遇到了麻烦,主要是我创建的两种敌人的产卵,当我们调用函数“startDifficultyTimer”时,有时会产生两个敌人。 基本上,当我调用该函数时,游戏会在同一行生成 2 个
从性能角度来看,什么是最正确的 - 敌人和武器之间的交互算法(这里的子弹可能更正确)? 每个 Sprite 的每一个子弹都应该通过“collidesWith”方法检查碰撞情况,并在完整的敌人列表上进行
遇到了一个问题,即敌人会向玩家开火,但似乎总是开到高处或向玩家的一侧,即使玩家是静止的并且没有移动。我是不是在我的代码中做错了什么导致了这个疯狂的问题,或者它只是一个随机的烦人的错误? 为播放器使用相
我是新来的快速编程。我想使用类节点将敌人生成到随机位置。我试图搜索随机生成敌人的代码,但它似乎与我的代码无关。 这是我搜索随机生成的代码。 import SpriteKit class GameSce
我最近遇到了一些问题,只是在我正在制作的游戏中传递对对象/敌人的引用,我想知道我是否使用了错误的方法。 我的主要问题是处理敌人和物体,而其他敌人或玩家可能仍然与它们有联系。 例如,如果你有一只兔子和一
在我的 2d 游戏中,我有一个金币和铜币的概念如下: when normal enemies die ..they drop a random gold or copper coin. Now whe
我是新来的,所以我希望你能帮助我。 我正在学习制作简单的 cocos2d 游戏的教程 Ray Wenderlich's Tutorial 我在另一个游戏中实现了它,一个像涂鸦跳跃这样的跳跃游戏。 在上
我是一名优秀的程序员,十分优秀!