因?yàn)闃I(yè)務(wù)需要,同時(shí)也是為了提高自身的代碼水平,寫這篇文章希望各位大牛多多指點(diǎn).
本文參考了
https://onevcat.com/2013/06/sprite-kit-start/SpriteKit王巍 的技術(shù)博客 盡管有點(diǎn)年代了,但是經(jīng)典之作還是很好的.
1,首先創(chuàng)建新項(xiàng)目,選擇iOS->Game創(chuàng)建
創(chuàng)建好之后會(huì)發(fā)現(xiàn)多了這四個(gè)文件,后來發(fā)現(xiàn)暫時(shí)用不到,果斷將他們刪除了,GameViewController
就相當(dāng)于普通項(xiàng)目的ViewController

2,創(chuàng)建基于SKScene的GameScreen

在它的初始化方法中添加背景音樂,為甚不先加精靈元素(SKSpriteNode)呢,因?yàn)楸救吮贿@個(gè)背景音樂搞得頭大,一直crash.抱著對(duì)技術(shù)負(fù)責(zé)的心態(tài),去搜索相關(guān)的東西,無論是AVAudioPlayer還是AVPlayer都播放改背景音樂有問題,這時(shí)候有點(diǎn)懷疑是不是音樂的問題,果斷去百度下載音樂,無奈都是各種坑,版權(quán)無法下載,最后還是在本機(jī)搜索到一個(gè)MP3格式的文件,放進(jìn)去測試項(xiàng)目可以播放,然后放進(jìn)游戲也是很流暢.可能是版本升級(jí)之后,改背景音樂不支持了吧(也可能改音樂文件中毒了),最后才加進(jìn)去了背景音樂(添加在初始化方法中).

然后將玩家添加到screen中

添加怪物并且讓它們從屏幕右側(cè)跑出來,在屏幕左側(cè)的時(shí)候從屏幕中移除,同時(shí)添加到數(shù)組中.值得一提的是為了讓游戲不太死板,在設(shè)置移動(dòng)速度的時(shí)候,通過隨機(jī)數(shù)生成隨機(jī)的速度.

玩家和怪物都添加完畢之后,是時(shí)候讓他們互動(dòng)起來了,這里我們?cè)趖ouchesBegan:
方法中實(shí)現(xiàn),通過獲取當(dāng)前點(diǎn)擊的location,計(jì)算偏移量和移動(dòng)距離添加子彈,在子彈出屏幕的時(shí)候移除掉.相比于靜態(tài)的UIView,SKScreen中是一個(gè)動(dòng)態(tài)監(jiān)測,它的-(void)update:(CFTimeInterval)currentTime方法可以為我們提供實(shí)時(shí)的精靈對(duì)象位置信息,通過遍歷怪物和子彈的位置關(guān)系,判斷是否打中怪物,同時(shí)做相應(yīng)的移除處理,并且計(jì)算得分.然后通過得分情況展示對(duì)應(yīng)的展示結(jié)果的Screen.
3,總結(jié):這是本人首次寫技術(shù)相關(guān)的文章,文章較短,內(nèi)容較少,希望大家多多指點(diǎn).