SpriteKit球速大小不同

时间:2014-02-01 14:20:13

标签: ios objective-c sprite-kit

我正在SKShapeNodeCGPathAddArc创建一个球 问题是如果我使用更大的半径,球移动得更慢 如果我使用较低的半径,球移动得更快。

// 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 个答案:

答案 0 :(得分:1)

物理实体具有mass属性,用于确定力被转换为加速度的方式。具体来说,他们遵循牛顿定律:F = ma。由于质量与加速度成反比,质量较小的球在相同力的作用下将具有更大的加速度。

使用路径创建物理实体时,主体的质量设置为与该路径的面积成比例的值。这就是为什么你的小球质量较小的原因。

但您可以将mass属性设置为您喜欢的任何属性,无论身体的区域如何。只需将所有球设置为具有一定的标准质量值,它们将以相同的方式响应相同的力量。

修改物理主体质量的另一种方法是更改​​其density属性。较小,较密的球可以具有与较大,较不密集的球相同的质量。但是直接设置mass可能更简单。