如何在 SpriteKit 的不同设备上使 SKSpriteNode 的速度相同?
How can I make an SKSpriteNode's velocity the same across different devices in SpriteKit?
我的场景大小是view.bounds.size
我有一个大小为 CGSize(width: frame.size.width/25, height: frame.size.width/25)
的球
最初,我的球速为 CGVector(dx: 25, dy: 25),但球在较小的设备 (SE) 上移动得更快,在较大的设备 (8 Plus) 上移动得更慢,这是有道理的。所以我将球的 x 和 y 速度更改为 frame.size.width * 0.067,在 iPhone 7 时变为 25,这是我喜欢的速度。不幸的是,球在不同的设备上仍然以不同的速度移动。然后,我认为一定是球的质量不同,因为球的大小是框架宽度的百分比。所以我将质量设置为常数,但球仍然以不同的速度移动
所以现在我不知道发生了什么事。
有什么想法吗?
我认为您可以为场景(游戏区域)使用恒定大小,并通过一些转换将该恒定大小渲染到任何屏幕。因此,您的应用程序的所有逻辑将在任何设备上以恒定大小进行交互。
如果屏幕有其他比例,您可以在屏幕边缘附近添加装饰元素。
我的场景大小是view.bounds.size
我有一个大小为 CGSize(width: frame.size.width/25, height: frame.size.width/25)
的球最初,我的球速为 CGVector(dx: 25, dy: 25),但球在较小的设备 (SE) 上移动得更快,在较大的设备 (8 Plus) 上移动得更慢,这是有道理的。所以我将球的 x 和 y 速度更改为 frame.size.width * 0.067,在 iPhone 7 时变为 25,这是我喜欢的速度。不幸的是,球在不同的设备上仍然以不同的速度移动。然后,我认为一定是球的质量不同,因为球的大小是框架宽度的百分比。所以我将质量设置为常数,但球仍然以不同的速度移动 所以现在我不知道发生了什么事。
有什么想法吗?
我认为您可以为场景(游戏区域)使用恒定大小,并通过一些转换将该恒定大小渲染到任何屏幕。因此,您的应用程序的所有逻辑将在任何设备上以恒定大小进行交互。
如果屏幕有其他比例,您可以在屏幕边缘附近添加装饰元素。