2015-09-23 64 views
0

我正在做一个游戏,如果在两个相同的物体之间发生碰撞,则会播放声音。我有这部分工作正常,但我只想要声音发挥,如果碰撞发生在视图中。我有一个滚动背景,进一步碰撞正在发出噪音。只有在碰撞可见的情况下才能运行skaction

无论如何,只有在碰撞发生时,才能限制这种声音?

现在,我使用此代码:

let rocksCollide = SKAction.playSoundFileNamed("rocks.wav", waitForCompletion: false) 

if nodeB.name == "SMALLASTEROID" && nodeA.name == "SMALLASTEROID"{ 
      runAction(rocksCollide) 
} 

任何帮助,将不胜感激。

+0

SKNode具有其是CGPoint的位置属性。该屏幕是具有CGRect的框架属性的SKNode。有一个函数CGrectContainsPoint(CGRect,CGPoint) – Fogmeister

+0

好的,谢谢你谷歌,即时通讯仍然是新的迅速和spritekit所以即时通讯发现它很难从这样的事情开始,所以谢谢。 – RickyD

回答

0

您可以检查node.position是否在可见框内。例如。

if (CGRectContainsPoint(visibleFrame, nodeA.position)) { 
    // Play sound.  
} 
+0

检查可见框架将这是view.bounds? – RickyD

+0

你怎么做你的滚动? – rakeshbs

+0

即时通讯使用更新功能和垂直滚动: self.background.position = CGPointMake(self.background.position.x, - (player.position.y - 180)/ 200) – RickyD

相关问题