楼主也是初学quick,想写几个简单的小项目入门,想想最简单的还是“微信打飞机”了(之前学cocos2d-js的时候也是从这个项目开始入手的)。
这里只是写一个微信打飞机的Demo,所以,不需要有太多的功能。先简单的分析下:
大概分为四个部分来实现:
1.先新建项目实现一个飞机在屏幕中移动
自定义场景,
精灵的定义
屏幕点击事件
2.在游戏中添加敌人和子弹
数组,
计时器
3.添加碰撞检测
数组中元素的删除,
动画
分数的实现
4.游戏结算
界面的切换,
这里先实现第一部分:
写一个MainScene和一个GameScen,MainScene作为菜单界面,点击菜单界面进入GameScene(游戏主界面),这里需要用到精灵的创建,触屏事件的添加,界面的切换。
下面上代码:
MainScene:
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代码:
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
时间: 2024-11-23 20:44:53