适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域

适配Apple的最新三款手机iPhoneXs、iPhoneXs Max及iPhoneXr。2048 * 1536 是iPad Retina 的分辨率。也是我们需要适配的设备里面分辨率最高的。 所以我们在游戏中都选择了这个大小,让它来兼容分辨率低的设备。 在其他设备上就用 AspectFill来进行缩放,并应用相应的屏幕辨率高宽比值Ratio,来适配各个不同的iPhone尺寸。

学好三角学(函数) — Swift和Javascript游戏开发的必备技能

弧度更加符合计算机的计算模式,因此我们需要将角度值转换为弧度值,在数学中的角度定义,0°度角是X-Axis轴的正方向,而飞船图片上的机头是往Y轴正方向,所以要修正一个90度的弧度,用通俗一点的讲就是数学压根儿不知到你的飞船图片上的机头方向是朝Y轴还是朝哪个角度,因为你就是一张图片。

一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas

游戏是一种很耗费资源的应用,特别是在移动设备中的游戏,性能优化是非常重要的

纹理集是将多张小图合成一张大图,使用纹理集有以下优点:
减少内存占用,减少磁盘占用;
减少磁盘读取次数,一次性读取一张大图比多次读取多张小图速度更快
一张大图:打开-读取小图-读取小图-读取小图-关闭;
多张小图:打开-关闭,打开-关闭,打开-关闭,打开-关闭;

SpriteKit在复制节点时留了一个巨坑给开发者,需要开发者手动把复制节点的isPaused设置为false

根据When an overlay node with actions is copied there is currently a SpriteKit bug where the node’s isPaused property might be set to true提示,SpriteKit有一个Bug需要开发者自己来填。
SpriteNode节点在被copy()复制后,会自动被设置为暂停,也就是节点的所有Action全部不可用,如果需要使用node.run(SKAction.run{//code}),得把复制后的节点isPaused设置为false 。