我正在SKShapeNode
和CGPathAddArc
创建一个球
问题是如果我使用更大的半径,球移动得更慢
如果我使用较低的半径,球移动得更快。
// 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;
答案 0 :(得分:1)
物理实体具有mass
属性,用于确定力被转换为加速度的方式。具体来说,他们遵循牛顿定律:F = ma。由于质量与加速度成反比,质量较小的球在相同力的作用下将具有更大的加速度。
使用路径创建物理实体时,主体的质量设置为与该路径的面积成比例的值。这就是为什么你的小球质量较小的原因。
但您可以将mass
属性设置为您喜欢的任何属性,无论身体的区域如何。只需将所有球设置为具有一定的标准质量值,它们将以相同的方式响应相同的力量。
修改物理主体质量的另一种方法是更改其density
属性。较小,较密的球可以具有与较大,较不密集的球相同的质量。但是直接设置mass
可能更简单。