我确信这很简单,但我一直在努力寻找在SpriteKit中实现此效果的最佳方法。我有一个激光节点,我希望每隔x#秒关闭一次。我已经尝试设置SKActions以关闭声音并淡出图像,但我不知道如何让节点知道它在SKAction中当前关闭或打开的天气。我想我正在寻找的是当我的runAction中的每个SKAction完成时的某种类型的回调。这样我可以设置一个标志来说明激光器是打开还是关闭,并在发生碰撞时使用它,所以我知道如何处理它。我不确定这是否是最佳方式。谢谢你的帮助。
答案 0 :(得分:0)
对于任何有兴趣我感兴趣的人都是runBlocks。 ruNBlacks是触发一段代码的SKActions。我在激光打开之前和关闭之前添加了运行块,以便它可以更新其状态。看起来这会很棒!
SKAction *soundAction = [SKAction playSoundFileNamed:@"Laser.m4a" waitForCompletion:NO];
SKAction *fadeInAction = [SKAction fadeInWithDuration: .5];
SKAction *firstWaitAction = [SKAction waitForDuration:1.5];
SKAction *fadeOutAction = [SKAction fadeOutWithDuration: .5];
SKAction *secondWait1Action = [SKAction waitForDuration:2];
SKAction *laserAnimAction = [SKAction sequence:@[
[SKAction runBlock:^
{
self.isOn=YES;
}],
soundAction,
fadeInAction,
firstWaitAction,
[SKAction runBlock:^
{
self.isOn=NO;
}], fadeOutAction,
secondWaitAction
]];