2013-11-26 3 views
0

Я создаю собственный путь к границе для физического интерфейса SKSpriteNode.SKSpriteNode не зависит от силы тяжести для пользовательской физикиBody

CGMutablePathRef edgePath = CGPathCreateMutable(); 

CGPathMoveToPoint(edgePath, NULL, -100, -70); 
CGPathAddLineToPoint(edgePath, NULL, -100, 40); 
CGPathAddLineToPoint(edgePath, NULL, -80, -20); 
CGPathAddLineToPoint(edgePath, NULL, 30, -20); 
CGPathAddLineToPoint(edgePath, NULL, 100, 100); 
CGPathAddLineToPoint(edgePath, NULL, 100, -70); 
CGPathCloseSubpath(edgePath); 

Я попытался выделить physicsBody, используя следующие коды:

sprite.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromPath:edgePath]; 

sprite.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:edgePath]; 

sprite.physicsBody = [SKPhysicsBody bodyWithEdgeChainFromPath:edgePath]; 

Ни один из них не позволяют спрайт быть затронуты действием силы тяжести.

Однако, если я использую простой bodyWithCircleOfRadius:, спрайт получает влияние на гравитацию.

Может ли кто-нибудь рассказать о том, почему это происходит?

+0

корпусWithPolygonFromPath должен работать. Другие не будут. Вставьте код, как вы прикрепляете физический элемент к узлу, пожалуйста, –

ответ

2

Резьбовая петля и цепь создают статические (неподвижные) тела. Они не будут затронуты гравитацией.

Корпуса формы Полигона должны быть подвержены воздействию силы тяжести. Однако вы должны убедиться, что полигон имеет против часовой стрелки обмотку, не самопересекающийся, а его форма выпукла. В противном случае результаты непредсказуемы.

+0

Созданная здесь форма является вогнутой. Вот почему он не работает. – ZeMoon

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