2013-10-12 3 views
3

Я делаю игру в комплекте Sprite, и у меня есть борьба с обнаружением столкновения между SpriteNodes, Я установил спрайт-узел под названием спрайт и узел спрайтов, называемый платформой. Я хочу, чтобы спрайт прекратил падение, столкнувшись с платформой. Это то, что у меня есть:Как обнаружить столкновение в комплекте спрайтов?

 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 Документации о SKNode и physicsBody собственности:

Значение по умолчанию равно нулю, что указывает на то, что узел не участвует в симуляции физики вообще.

Если вы хотите, чтобы ваш шар катиться на платформе или что-то вы должны установить physicsBody свойство вашей платформы.

Кроме того, вы должны отключить динамическое свойство на платформе:

Значение Boolean, указывающее, является ли тело физика тронуты моделирования физики.

В противном случае ваша платформа упадет/переместится, если на нее упадет другой объект, затронутый физикой.

Ссылки: 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

Смежные вопросы