【问题标题】:Player jumps higher on iPhone 6 than iPhone 5s玩家在 iPhone 6 上跳得比 iPhone 5s 高
【发布时间】:2015-04-24 13:24:13
【问题描述】:

我创造了一种冲动:

impulse = frame.size.height/18

和重力:

self.physicsWorld.gravity = CGVectorMake(0.0, -2.85)

我使用此代码将冲动应用于玩家:

hond.physicsBody?.applyImpulse(CGVectorMake(0, impulse))

现在当我在模拟器上测试时,玩家在 iPhone 5s 模拟器上跳得更高,在 iPhone 6 或 iPhone 6 plus 模拟器上跳得更低。

为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 我认为你的问题是你如何计算冲动。 iPhone 5s 的屏幕比 iPhone6/6s 的屏幕小,所以 frame.size.height/18 会有所不同
  • 谢谢,但没有帮助,请参阅我对 Dean 的回答
  • 您可以使用vijeesh代码来检测每个设备并个性化冲动值

标签: ios swift sprite-kit gravity


【解决方案1】:

你的冲动是impulse = frame.size.height/18 取决于屏幕的高度。但 iPhone 6 和 6 plus 的高度比配备 4 英寸屏幕的 iPhone 更高。

这就是你的玩家跳得更高的原因。

【讨论】:

  • 在您的情况下,使用 iPhone 6 plus 播放器应该跳得更高,但跳得更低。我将脉冲更改为:脉冲 = 18。仍然 iPhone 5s 跳得高于 6 和 6 plus..
  • 也许您的场景的其余部分也取决于屏幕尺寸?如果装饰元素取决于屏幕的大小,那么固定的冲动将无助于每个设备都有相同的跳跃
  • 没错,场景的其余部分取决于屏幕尺寸。有没有更简单的方法来定义冲动而不是追踪正在使用的设备?
  • 您可以根据障碍物的大小定义冲量,例如?系数合适,应该是可靠的。
【解决方案2】:

这是https://gist.github.com/1323251的更新版本

https://github.com/froztbytes/UIDeviceHardware

这将帮助您找到当前正在运行该应用的设备。根据设备编码,您可以解决您的问题

【讨论】:

  • 我在我的项目中实现了它,但是当我构建它时会出现这个错误;使用未声明的标识符“UIDevice”,指向 .m 文件
  • 查看源代码,这仅适用于模拟器,在实际情况下您不需要检测 i386 或 x86_64。只需为每个返回不同的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多