用Swift语言和Sprite Kit复制微信飞机大战游戏

Posted lxjshuju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Swift语言和Sprite Kit复制微信飞机大战游戏相关的知识,希望对你有一定的参考价值。

先上GitHub链接:

https://github.com/songrotek/PlaneWar.git

技术分享


接下来略微解说一下!

这个程序还有点Bug,见谅!


1 说明

游戏採用了Sprite kit最新的Per pixel for physic 技术。就是直接使用texture纹理作为sprite的physics body 。

游戏的texture.atlas从别的打飞机项目中拷之并辛苦地分解了。

游戏编写借鉴了网上的objc代码!


2 游戏编写过程

加入背景-》

加入控制的飞机-》

加入发子弹-》

加入敌机-》

检測contact接触-》

加入分数-》

加入游戏控制暂停。继续。又一次開始


3 须要注意的问题

1)SKScene 

GameScene加载时默认的frame大小 是1024*768,这是因为GameScene.sks的设置决定的。

但对于打飞机这款仅仅要竖屏就能玩的游戏来说,没有这个必要,所以在GameViewController里初始化时设置了GameScene的大小

scene.size = view.frame.size

当然也能够在Sprite kit editor中直接改

2)per pixel的问题

因为physics body是texture的形状并且是像素级别。所以有锯齿,导致的问题就是contact接触检測时出现一次接触调用n次didBeginContact:函数

解决的方法就是把图用photoshop打开编辑。把边修得平一点。


4 小结

总体上来说。用Swift和ObjC本质是一样的。该怎么编写还是得怎么编写,但代码确实是简洁了不少,能够节省非常多时间。所以建议换到Swift!














以上是关于用Swift语言和Sprite Kit复制微信飞机大战游戏的主要内容,如果未能解决你的问题,请参考以下文章

swift 2 sprite-kit 中的多行标签?

Sprite Kit 如何更新按钮上的图像?

游戏中的三角学——Sprite Kit 和 Swift 教程

Swift Sprite Kit 中的游戏中心

使用 Sprite Kit 和 Swift 在游戏中显示当前分数

使用 Swift 在 sprite kit 中的多个场景中重用相同的 sprite 节点