【发布时间】:2017-01-06 01:11:25
【问题描述】:
TL;DR : 我想找到一种方法来给一个物体一个脉冲,使这个物体的速度与场景大小成正比。
我目前正在构建一个可以在许多不同屏幕尺寸上使用的 SpriteKit 游戏,当我在除我开发的一个,我注意到:
节点尺寸太小
物体的速度太低(我给物体速度的方法是在它们的物理体上调用
applyImpulse(:_))。
我想我通过一个简单的比例操作解决了大小问题:我查看了具有正确对象大小的场景的 objectArea/sceneArea 比率,而不是给我的对象提供固定尺寸,我只是给了它们尺寸这样无论场景区域如何,比率始终相同。
对于物体的速度,它更棘手......
我首先认为这是由于物体本身更大,因此物理质量更高,但因为我通过直接将它们的质量归因于物体它们的质量属性,无论它们的大小如何,物体都将具有完全相同的质量。
我终于明白,只是因为屏幕大小不同,所以一个物体,即使以相同的速度移动,在更大的屏幕上似乎移动得更慢。 p>
我的问题是我不知道如何调整我的冲动强度,以便在不同的场景大小中保持一致,我目前的方法是:
force = sqrt(area) * k
其中 k 也是比例系数,我无法在面积上做比例,否则速度会呈指数增长(所以我用面积的平方根来代替)。
虽然这种方法有效,但我只能凭直觉找到这种计算方法。虽然我知道物体区域与场景大小成正比,但我真的不知道速度是否可以在所有屏幕尺寸上被视为相同
您知道我应该怎么做才能确保所有设备上的速度始终相同吗?
【问题讨论】:
-
嗯,我有一个问题,你为什么要手动进行缩放?只需制作 3 个 sks 文件(一个纵横比为 16:9,一个纵横比为 4:3,一个纵横比为 3:2),然后使用 .AspectFill scaleMode 选择正确的一个
标签: swift math sprite-kit