前言
这个就作为最后一篇吧,当然,可以扩展的方面还有很多,比如分数的记录,结算界面还有一些小道具等,就不添加了。这只是当作一个简单的入门,而在这个入门中确实学到了不少东西。而那些没添加的东西呢,其实,就没那么重要了。没有太难的知识点。所以,就没必要纠结太长时间了。
正文
碰撞检测:
碰撞检测重新写了一个计时器,这个计时器是每帧调用的,也就是每秒调用60次。但是,没有用updata。
检测碰撞的函数如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
functionGameScene:checkCollision()
--这个方法处理碰撞检测,子弹和敌人的碰撞检测,敌人和player的碰撞检测
for
k_b,v_binpairs(self.bullets)
do
k_e,v_einpairs(self.enermy)
do
localeffectSprite=display.newSprite(
"#explosion_01.png"
):addTo(self)--爆炸精灵
effectSprite:pos(v_e:getPosition())
--这里用了笨方法,在播放完动画后,removeSelf,这个Animation是不是不能更Action一起呢?没有在API中找到答案,我会继续的。
effectSprite:playAnimationOnce(self:createAnimation(
"explosion_0%d.png"
,0.5,3))
localsequence=cc.Sequence:create(cc.DelayTime:create(0.6),
cc.CallFunc:create(function()
effectSprite:removeSelf()
end)
)
effectSprite:runAction(sequence)
--子弹是一枪毙命,偷懒了
v_e.isDead=
true
v_b.isDead=
true
end
end
end
--清除死亡的子弹和敌人
do
v_b.isDead==
true
then
self.bullets[v_b]=nil
v_b:removeSelf()
end
end
do
v_e.isDead==
then
self.enermy[v_e]=nil
v_e:removeSelf()
end
end
end
--帧动画从1开始,返回一个真动画
functionGameScene:createAnimation(frameName,delayTime,frameNum)
localframes=display.newFrames(frameName,1,frameNum)
localanimation=display.newAnimation(frames,delayTime/frameNum)
return
animation
end
|
到这里,我要写的东西就完了,这个程序没有那么精致,但是,其中还是有不少知识点的,相信对于像我一样刚开始接触quick的人来说还是有帮助的,当然,至于程序的细化,实现更复杂的功能,就《微信打飞机来说》,剩下的工作可能就是更改了,应该没多少难点了。
GameScene源码:
由于,自己知识有限,程序可能还有其他问题。如果,有人发现希望指正,大家一起进步吧!!
感谢本文笔者(最后的牛仔)的分享,Cocos引擎中文官网欢迎更多的开发者分享开发经验。来稿请发送至:support@cocos.org。