代码之家  ›  专栏  ›  技术社区  ›  WebOrCode

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

  •  6
  • WebOrCode  · 技术社区  · 10 年前

    我有一个球在屏幕上弹跳,像乒乓球。
    球的半径取决于屏幕的宽度。

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

    问题 如何正确修复此问题?
    我找到了两种方法:
    首先是: SpriteKit iPhone/iPad different resolution, need same physics 改变 SKPhysicsWorld . 第二个是: SpriteKit ball speed differ on size 修复 mass 球。

    我认为修复 大量 球是正确的方式。
    我说得对吗?

    1 回复  |  直到 8 年前
        1
  •  0
  •   WebOrCode    10 年前

    我使用这种方法的应用程序可以在以下位置看到:
    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只是我选择的常数。