文章目录:
- 1、cocos游戏源码怎么用
- 2、Cocos Creator 引擎源码调试、修改
- 3、如何使用Cocos Code IDE和Cocos2d-x开发《一个都不能落下》游戏
- 4、我用cocos studio 如果想改cocos2d-x的源码怎么办
cocos游戏源码怎么用
cocos游戏源码使用方法如下:
1、启动CocosCreator。
2、选择打开其他项目。
3、点击打开按钮,CocosCreator编辑器主窗口打开即可。
Cocos Creator 引擎源码调试、修改
Cocos Creator 的引擎部分包括 JavaScript 、 Cocos2d-x-lite 和 adapter 三个部分,各部分对应源码在(Mac 版):
JavaScript:CocosCreator.app/Resource/engine(JS 引擎)
Cocos2d-x-lite:CocosCreator.app/Resource/cocos2d-x(Cococ2d-x 引擎)
adapter:CocosCreator.app/Resource/builtin/
如何使用Cocos Code IDE和Cocos2d-x开发《一个都不能落下》游戏
1.创建新工程
打开Cocos Code IDE,切换到Lua工作环境
选择菜单,新建一个Cocos Lua项目,输入项目名:NoOneLeftBehind。
点击下一步设置屏幕方向和分辨率,确认完成
这个时候你就可以点击运行按钮,没有问题的话示例demo就会弹出。
因为分辨率被我们更改过的关系,游戏画面有点变形。
2.游戏逻辑
现在我们就可以往游戏项目中添加自己的代码了。由于游戏的代码细节并不是本文的重点,所以这里只简单地介绍《一个都不能落下》的实现原理。整个游戏项目源码可以在我的Github上下载。
A.main.lua是游戏的入口,在main()函数中我们可以找到场景跳转的代码,这在接口上和Cocos2d-x是保持一致的,因此我们可以很容易上手。在这里我们更改第一个场景为主菜单场景。
--create scene
local scene = require("MenuScene")
local menuScene = scene.createScene()
if cc.Director:getInstance():getRunningScene() then
cc.Director:getInstance():replaceScene(menuScene)
else
cc.Director:getInstance():runWithScene(menuScene)
end
B.MenuScene.lua是游戏的主菜单,四种难度的游戏模式可以在这里进行选择。你可以用下面这种方式创建一个menu。
--create menu
local function menuCallbackOpenNormal()
cc.Director:getInstance():replaceScene(require("GameScene").createScene(2))
end
local normal = cc.MenuItemImage:create("normal.png", "normal.png")
normal:setPosition(0, 150)
normal:registerScriptTapHandler(menuCallbackOpenNormal)
...
local menu = cc.Menu:create(normal, nightmare, hell, inferno)
self:addChild(menu)
C.GameScene.lua是游戏的主场景,通过传进来的heroCount设置同时显示几个hero。
--add hero
function GameLayer:addControllers()
local visibleSize = cc.Director:getInstance():getVisibleSize()
local startY = 30
local gap = (visibleSize.height - startY) / self._heroCount
for i=1, self._heroCount do
local controller = require("HeroController").createController(self, startY + gap * (i - 1))
table.insert(self._controllers, i, controller)
end
end
D.在这里我们对英雄和他作用的环境进行了封装。然后在GameScene的每一帧调用HeroController的onUpdate函数,在这个函数中检测一个随机定时器来判断是否应该生成一个新的障碍物。
-- create block
function HeroController:onUpdate()
self.frameIndex = self.frameIndex +1
if self.frameIndex = self.nextKeyFrameIndex then
local block = require("Block").new()
block:init()
self._layer:addChild(block)
block:setPositionY(self._positionY + block:getContentSize().height / 2)
self:resetTimer()
end
end
E.物理引擎。Hero和,Ground,Block的碰撞这里采用了Cocos2d-x集成的物理引擎。以下代码反映了Hero和Block的碰撞检测。
-- collision detection
self.touchListener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN)
cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraphPriority(self.touchListener, self)
local function onContactBegin(contact)
self:unscheduleUpdate()
cc.Director:getInstance():getEventDispatcher():removeEventListener(self.touchListener)
cc.Director:getInstance():getEventDispatcher():removeEventListener(self.contactListener)
cc.Director:getInstance():replaceScene(require("GameOver").create(self._heroCount, score))
end
self.contactListener = cc.EventListenerPhysicsContact:create();
self.contactListener:registerScriptHandler(onContactBegin, cc.Handler.EVENT_PHYSICS_CONTACT_BEGIN);
local eventDispatcher = self:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(self.contactListener, self);
F.Block类,封装了障碍物,每一帧向左移动。如果超出了屏幕则删除。
--move the block
function update(dt)
self:setPositionX(self:getPositionX() - 3.5)
if (self:getPositionX() 0) then
self:unscheduleUpdate()
self:removeFromParentAndCleanup()
end
end
self:scheduleUpdateWithPriorityLua(update, 0)
3.各平台打包
点击打包按钮,
如果没有添加本地代码,会提示添加本地代码。
A.Android打包
选择打包为APK,选择debug签名或者自定义签名,选择SDK版本,确认生成。
B.iOS平台打包
选择打包为IPA,选择证书和平台,确认生成。.....
我用cocos studio 如果想改cocos2d-x的源码怎么办
-x 版在包含 oc 版所有功能的基础上还提供了额外的模块,同时有 Studio 这样的编辑器支持,以及良好的跨平台特性。所以实在没有必要继续使用 oc 版了。我用cocos studio 如果想改cocos2d-x的源码怎么办
nstance():getEventDispatcher():addEventListenerWithSceneGraphPriority(self.touchListener, self)local function onContactBegin(contact)
nTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN)cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraphPriority(sel
tor.app/Resource/engine(JS 引擎) Cocos2d-x-lite:CocosCreator.app/Resource/cocos2d-x(C
ator 引擎源码调试、修改Cocos Creator 的引擎部分包括 JavaScript 、 Cocos2d-x-lite 和 adapter 三个部分,各部分对应源码在(Mac 版): JavaScript
游戏源码使用方法如下:1、启动CocosCreator。2、选择打开其他项目。3、点击打开按钮,CocosCreator编辑器主窗口打开即可。Cocos Creator 引擎源码调试、修改Cocos Creator 的引擎部分包括 JavaScript 、 Cocos2d-x-