无论iPad和iPhone中的对象大小如何,SpriteKit中的物理相同

Web*_*ode 6 objective-c game-physics ios sprite-kit

我有一个在scree周围弹跳的球,就像乒乓球一样.
球的半径取决于屏幕的大小.

我发现在iPhone和iPad上球的速度并不相同.
因为iPad上的球更大,所以它更大ball.physicsBody.mass.

问题 如何正确解决这个问题?
我找到了两种方法:
首先是:SpriteKit iPhone/iPad的分辨率不同,需要同样的物理变化SKPhysicsWorld.第二是:SpriteKit球速大小mass球的固定不同.

我认为固定mass球是正确的方法.
我对么 ?

Web*_*ode 0

我使用这种方法的应用程序可以在以下位置看到:
https ://itunes.apple.com/us/app/pongfinity/id930801337

我做了以下工作:

我已经修复了:摩擦、恢复、线性阻尼和质量,以及球物理主体上的所有属性。

我用的是自己写的函数:

NSUInteger normalizeForHeight(NSUInteger number)
{
    CGRect  screenRect   = [[UIScreen mainScreen] bounds];
    CGFloat screenHeight = screenRect.size.height;



    CGFloat factor = 1.0;
    factor = screenHeight / 480;
    return (number * factor);
}
Run Code Online (Sandbox Code Playgroud)

所以每次当我改变球的速度时,我都会使用这个normalizeForHeight(20),20只是我选择的一些常数。