2013-10-12 30 views
3

我在Sprite Kit中做了一個遊戲,並且在SpriteNodes之間的碰撞檢測中掙扎着, 我設置了一個名爲sprite的sprite節點和一個名爲platform的sprite節點。 我想讓精靈在與平臺相撞時停止墜落。 這是我有:如何檢測sprite套件中的碰撞?

 SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"bal.png"]; 
     sprite.position = CGPointMake(self.frame.size.width/4 + arc4random() % ((int)self.frame.size.width/2), (self.frame.size.height/2 + arc4random() % ((int)self.frame.size.height/2))); 
     sprite.color = [self randomColor]; 
     sprite.colorBlendFactor = 1.0; 
     sprite.xScale = 0.2; 
     sprite.yScale = 0.2; 
     [self addChild:sprite]; 
     sprite.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:sprite.size.width/2]; 
     self.physicsWorld.gravity = CGVectorMake(0.0f, -4.0f); 

     SKSpriteNode *platform = [SKSpriteNode spriteNodeWithImageNamed:@"YellowPlatform.png"]; 
     platform.position = CGPointMake(CGRectGetMidX(self.frame), -200+CGRectGetMidY(self.frame)); 
     platform.size = CGSizeMake(180, 10); 
     [self addChild:platform]; 

在此先感謝!

回答

6

從Apple文檔關於SKNodephysicsBody屬性:

默認值是零,這表明該節點不參加物理模擬的。

如果你想你的球滾動的平臺或者你必須設置你的平臺的physicsBody財產上的東西。

另外,你必須禁用平臺上的動態屬性:

一個布爾值,指示物理體是否由物理模擬移動。

否則你的平臺會掉落/移動,如果其他物理受影響的物體落在它上面。

鏈接:https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/Reference/Reference.html#//apple_ref/occ/instp/SKNode/physicsBody https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKPhysicsBody_Ref/Reference/Reference.html

+0

感謝您回覆,我理解你正在試圖說些什麼,但什麼是代碼,我需要確切的線路? – Vince

+0

正如你所說,你需要設置一個_physicsBody_到你的平臺,所以你需要這樣的東西: platform.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:platform.size]; 此外,您必須禁用_dynamics_,以便平臺不會掉落: platform.physicsBody.dynamic = NO; – lahmar

+0

非常感謝@lahmar! – Vince