用Quick-Cocos2d-x 3.3简单开发微信打飞机 -01

本文将引导初学者通过构建一个简单的‘微信打飞机’游戏,采用Cocos2d-JS框架入门。文章详细解析了项目的四个关键步骤:创建移动飞机、添加敌人和子弹、实现碰撞检测以及游戏结算。并通过提供的代码示例,逐步指导读者完成游戏开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言
楼主也是初学quick,想写几个简单的小项目入门,想想最简单的还是“微信打飞机”了(之前学Cocos2d-JS的时候也是从这个项目开始入手的)。


正文

这里只是写一个微信打飞机的Demo,所以,不需要有太多的功能。先简单地分析下:

大概分为四个部分来实现:

1.先新建项目实现一个飞机在屏幕中移动

自定义场景,

精灵的定义

屏幕点击事件

2.在游戏中添加敌人和子弹

数组,

计时器

3.添加碰撞检测

数组中元素的删除,

动画

分数的实现

4.游戏结算

界面的切换,

这里先实现第一部分:

写一个MainScene和一个GameScen,MainScene作为菜单界面,点击菜单界面进入GameScene(游戏主界面),这里需要用到精灵的创建,触屏事件的添加,界面的切换。

下面上代码:

MainScene:

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
local MainScene =  class ( "MainScene" , function()  
     return  display.newScene( "MainScene" )  
end)  
   
function MainScene:ctor()  
     --添加一个背景精灵  
     self.bgSprite = display.newSprite( "game_bg.jpg" ):addTo(self)  
     self.bgSprite:pos(display.cx,display.cy)   
     --添加一个TouchLayer  
     self.touchLayer = display.newColorLayer(cc.c4b(255,255,255,0)):addTo(self)  
     self.touchLayer:setTouchEnabled( true )  
     self.touchLayer:addNodeEventListener(cc.NODE_TOUCH_EVENT,function(event)  
         if  event.name ==  "ended"  then  
             --切换界面  
             local nextScene = require( "src.app.scenes.GameScene" ). new ()  
             display.replaceScene(nextScene,  "fade" , 0.5, cc.c3b(0, 0, 0))  
         end  
         return  true  
     end)  
end  
   
function MainScene:onEnter()  
end  
   
function MainScene:onExit()  
end  
       
   
return  MainScene

GameScene代码:

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
local GameScene =  class ( "GameScene" ,function ()  
     return  display.newScene( "GameScene" )  
end)  
   
function GameScene:ctor()  
     --添加Player精灵  
     self.player = display.newSprite( "hero_1.png" ):addTo(self)  
     self.player:pos(display.cx,display.cy)  
     self.player:setLocalZOrder(10)  
     self.touchPos = cc.p(0,0)  
   
     --添加一个TouchLayer接收点击事件  
     self.touchLayer = display.newColorLayer(cc.c4b(255,0,0,255)):addTo(self)  
     self.touchLayer:setTouchEnabled( true )  
     self.touchLayer:addNodeEventListener(cc.NODE_TOUCH_EVENT,function(event)  
         print(event.name)  
         if  event.name ==  "began"  then  
             self.touchPos = cc.p(event.x,event.y)  
         elseif event.name ==  "moved"  then  
             local x = event.x - self.touchPos.x ;  
             local y = event.y - self.touchPos.y ;  
             self.touchPos = cc.p(event.x,event.y) ;  
             self:onTouch(x,y) ;  
         else  
             self.touchPos = cc.p(0,0)   
         end  
         return  true  
     end)  
end  
   
function GameScene:onTouch(x,y)  
      --更新飞机的位置,没有对飞机是否会触屏做限制  
     self.player:pos(self.player:getPositionX() + x,self.player:getPositionY() + y)  
end  
   
function GameScene:onEnter()  
end  
   
function GameScene:onExit()  
end  
   
return  GameScene


感谢本文笔者(最后的牛仔)的分享,Cocos引擎中文官网欢迎更多的开发者分享开发经验。来稿请发送至:support@cocos.org

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值