swift – SpriteKit:在各种设备上保持一致的大小和速度
TL; DR:我想找到一种给物体提供脉冲的方法,这样物体的速度就与场景大小成正比.
我目前正在构建一个可用于许多不同屏幕尺寸的SpriteKit游戏,当我在其他设备上启动我的游戏时,我的场景调整大小与其视图大小相同(scene.scaleMode = .ResizeFill)我开发了它,我注意到: >节点的大小太小 我想用一个简单的比例操作来修正大小问题:我查看了具有正确对象大小的场景的objectArea / sceneArea比率,而不是给我的对象提供固定尺寸,我只是给它们尺寸以便无论场景区域如何,比率始终相同. 对于物体速度,它更棘手…… 我终于弄清楚这只是因为屏幕尺寸不同,因此,即使以相同的速度移动,对象也会在更大的屏幕上移动得更慢. 我的问题是,我不知道如何调整我的冲动强度,以便它在不同的场景大小上保持一致,我目前的方法就是这样: force = sqrt(area) * k 其中k也是比例系数,我不能在该区域上做比例,否则,速度会呈指数增长(所以我用区域的平方根代替). 虽然这种方法有效,但我只是用这种直觉来计算它.虽然我知道对象区域与场景大小正确成比例,但我无法确定在所有屏幕尺寸上是否可以将速度视为等效 你知道我应该做些什么来确保所有设备上的速度始终相同吗? 解决方法
不要这样做
改变与设备屏幕相关的物理世界是错误的. 物理世界应该对其图形表示绝对不可知.并且最终它应该具有相同的属性(大小,质量,距离……),无论屏幕如何. 我知道你不希望当游戏在iPad Pro而不是iPhone 5上运行时,场景会变小,但你需要以另一种方式解决这个问题. 我建议你尝试像aspectFill这样的另一个scaleMode(如果你在Xcode 7上使用大写:AspectFill).通过这种方式缩放场景,所有精灵都会显得更大. 另一个角度来看
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ORA-00845: MEMORY_TARGET not supported on thi
- ruby-on-rails – 从外部窗体接收POST
- c# – 显示重新抛出的异常堆栈跟踪,而不是从抛出
- cocos2d-x 2.x使用python脚本快捷创建项目的简单
- flex datagrid 嵌checkbox实现全选与数据存储(非
- routing – react-native-router-flux,如何获取当
- 飞镖 – 缠绕文字
- ISE 13 Spartan 6 FPGA 配置 SPI Flash 芯片
- Oracle 导入、导出命令(imp/exp)
- ruby-on-rails – 在Rails 4中接收POST数据并读取