2014-02-01 3 views
1

Я создаю шар SKShapeNode и CGPathAddArc.
Дело в том, что если я использую больший радиус, шар движется медленнее.
Если я использую нижний радиус, шар движется быстрее.Скорость вращения шара SpriteKit различается по размеру

// width depends on screen size (iphone, ipad) 
// on iPhone the speed of the ball is something I like 
// when on the ipad the speed is very slow 
CGPathAddArc(ballPath, NULL, 0, 0, self.frame.size.width/80, 0, M_PI*2, YES); 

Как сделать его (скорость движения) постоянным независимо от радиуса?

_ball.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:ballPath]; 
_ball.physicsBody.friction  = 0.f; 
_ball.physicsBody.restitution = 1.002f; 
_ball.physicsBody.linearDamping = 0.f; 
_ball.physicsBody.affectedByGravity = NO; 
_ball.physicsBody.allowsRotation = NO; 

ответ

1

Физик тела имеют mass свойство, которое определяет, как силы переводятся на ускорения. В частности, они следуют закону Ньютона: F = ma. Поскольку масса обратно пропорциональна ускорению, шарики с меньшей массой будут иметь большее ускорение в ответ на ту же силу.

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

Но вы можете установить mass, чтобы быть как вам угодно, независимо от площади тела. Просто установите все свои мячи на стандартное значение массы, и они будут одинаково реагировать на те же силы.

Другой способ модифицировать массу физического тела - изменить его свойство density. Меньшие, более плотные шары могут иметь ту же массу, что и более крупные, менее плотные. Но, вероятно, проще просто установить mass напрямую.

+0

Какова математическая формула для преобразования плотности на основе отношения экрана между iPhone и iPad? Высота экрана iPad составляет 1.802817 x высота экрана iPhone 5. Я хотел бы изменить плотность моих узлов соответственно, но я бы предпочел не прибегать к эмпирическому определению того, что плотность «чувствует себя правильно». – Edward

+0

Чувак, просто дайте всем своим физическим телам ту же массу. То же самое на обоих устройствах. Тогда они будут вести себя так, как вы хотите, независимо от их размера. – CharlieMezak

+0

Опубликовано как собственный вопрос здесь: http://stackoverflow.com/questions/21791255/spritekit-iphone-ipad-different-resolution-need-same-physics – Edward

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