ios - 无论 iPad 和 iPhone 中对象的大小如何,SpriteKit 中的物理特性都相同

标签 ios objective-c sprite-kit game-physics

我的球在碎石板上弹跳,有点像乒乓球。
球的半径取决于屏幕的大小。

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

问题 如何正确解决这个问题?
我找到了两种方法:
首先是:SpriteKit iPhone/iPad different resolution, need same physics更改 SKPhysicsWorld。 第二个是:SpriteKit ball speed differ on size修复球的质量

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

最佳答案

可以在以下位置看到我使用这种方法的应用程序:
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);
}

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

关于ios - 无论 iPad 和 iPhone 中对象的大小如何,SpriteKit 中的物理特性都相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24882405/

相关文章:

iOS 11.2.1 Xcode 9.2 BoringSSL SSL_ERROR_ZERO_RETURN(6)

ios - 覆盖距离和实际距离的折线 :ios

ios - 按下按钮时声音不会播放

ios - 无法使用 moveToY SKAction

iphone - -[__NSCFArray objectAtIndex :]: index (1) beyond bounds (1)

objective-c - 我们应该在 viewDidLoad 还是 viewDidAppear 中调用广告?

objective-c - 转换与新 IOS 兼容的应用程序时出现弃用错误

ios - iOS 中的 CALayer 在设备方向更改时自动调整大小

Swift 游戏无限生成不起作用

ios - 如何缓存或预加载 SKLabelNode 字体?