Ios 无论iPad和iPhone中的物体大小,SpriteKit的物理特性都是一样的

Ios 无论iPad和iPhone中的物体大小,SpriteKit的物理特性都是一样的,ios,objective-c,sprite-kit,game-physics,Ios,Objective C,Sprite Kit,Game Physics,我有一个球在石板上蹦蹦来蹦去,有点像乒乓球。 球的半径取决于屏幕的宽度 我发现在iPhone和iPad上,足球的速度不一样。 因为球在iPad上更大,所以它有更大的ball.physicsBody.mass 问题 如何正确修复此问题? 我找到了两条路: 首先是:更改SKPhysicsWorld。 第二个是:固定球的质量 我认为固定球的质量是正确的方法。 我说得对吗 我使用这种方法的应用程序可以在: 我做了以下工作: 我已经修正了:摩擦,恢复,线性阻尼和质量,所有关于球物理体的属性 我使用了自己

我有一个球在石板上蹦蹦来蹦去,有点像乒乓球。
球的半径取决于屏幕的宽度

我发现在iPhone和iPad上,足球的速度不一样。
因为球在iPad上更大,所以它有更大的
ball.physicsBody.mass

问题 如何正确修复此问题?
我找到了两条路:
首先是:更改
SKPhysicsWorld
。 第二个是:固定球的质量

我认为固定球的质量是正确的方法。

我说得对吗

我使用这种方法的应用程序可以在:

我做了以下工作:

我已经修正了:摩擦,恢复,线性阻尼和质量,所有关于球物理体的属性

我使用了自己编写的函数:

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



    CGFloat factor = 1.0;
    factor = screenHeight / 480;
    return (number * factor);
}

所以每次我改变球的速度时,我都会使用这个
标准化前视(20)
,20只是我选择的某个常数。

为什么不做一个快速测试呢?相对于圆形状的大小差异增加质量,查看它在两个设备上的行为是否相同。我不认为它会,因为质量和形状大小可能没有线性关系。即使这样,你也必须放大所有其他物体的质量,以及重力,以确保至少类似的碰撞行为。我已经在SpriteKit上做了这些测试,我可以肯定的是速度与质量成线性关系,但我没有看到大小/面积/体积与质量之间的线性关系。在我看来,这是一个非常普遍的问题。若你们制作的游戏像乒乓球,你们希望所有设备上的球的运动都是一样的。所以我希望已经解决了这个问题的人能给我一些经验,告诉我他是如何解决这个问题的。我之前的评论是错误的,因为我对calc做了计算,并做了一些取整。在将所有内容放入excel(并使用CORREL函数)后,我可以说所有内容都是线性的,例如质量与形状大小之间的关系。那么最后,您采用了哪种方式,以及如何做到这一点?因为这些都不适合我。