lua脚本调用cocos2d-x 之实现精灵、Tmx地图创建【iOS游戏开发征文】
2013-03-22 17:56
891 查看
#本文参与——51CTO博客《iOS游戏开发征文活动[/u]》#
各位同学大家好,小编今天在此与各位一起通过Lua脚本实现一下用cocos2d-x 2.0.4来创建精灵、及Tmx地图,为大家进入IOS游戏开发提供一个学习实例。各位老人、高手、专家、大神请自觉飘过哈
当然要想拍砖请手下留情。
如果大虾们肯留下个脚印或其它相关学习实例就万分感谢了。
开发环境的搭建就不介绍了哈,大家可以度娘、谷哥一翻。
好啦,不费话了,开始正式编码啦。再废话一下,不知道lua脚本的请度娘、谷哥扫下盲
先创建好项目,如果不懂的,可直接从cocos2d-x的samples下搞个项目过来改改就好。
1)通过lua调用cocos2d-x创建精灵
准备一张精灵的四个方向的行走图片
定义createSprite脚本方法来生成精灵
2)通过lua调用cocos2d-x实现精灵帧动画
根据精灵图片特点:第一行为向下行走动画;第二行为向左行走动画;第三行为向右行走动画;第四行为向上行走动画。
3)创建菜单控制精灵动画
为了方便实例演示,我们创建四个菜单项来控制精灵的上、下、左、右动画的播放。
至此,我们就完成了通过lua脚本调用cocos2d-x实现精灵创建、精灵行走动画控制的脚本代码编写了。
运行结果是:按下左行走菜单时播放精灵向左行走动画;按下右行走菜单时播放精灵向右行走动画;按下下行走菜单时播放精灵向下行走动画;按下上行走菜单时播放精灵向上行走动画。
4)通过lua脚本调用cocos2d-x创建tmx地图
Tiled 这个地图编辑工具可以编辑了2D的很多很多游戏地图,只要你想得到的都行,具体使用方法及软件下载安装大家度娘一下就有一堆资料了,这里就不啰嗦了。
先用tiled创建好地图文件如:test-tilemap.tmx然后就可以写lua脚本进行创建操作啦,代码如下:
简单吧
几行脚本即可创建出tmx地图图层了。当然这只是个例子,具体游戏中还会有更多的事件要处理的了。
5)显示到手机屏幕
把以上步骤中创建的各个图层加入到场景中,然后就可以显示到手机屏幕上啦。
6)小结
本文中的可能有部分变量定义未列出,大家在编码时发现少了的话就自己local xxx定义一下即可。
好啦,先写到这里了。还有好多东西都不懂,所以还得好好学习。
感谢大家看完本文
同时也希望本文能给到你少少的学习帮助或参考。
如果你觉得本文有帮助的话请评论一下,赞一个哦
各位同学大家好,小编今天在此与各位一起通过Lua脚本实现一下用cocos2d-x 2.0.4来创建精灵、及Tmx地图,为大家进入IOS游戏开发提供一个学习实例。各位老人、高手、专家、大神请自觉飘过哈
当然要想拍砖请手下留情。
如果大虾们肯留下个脚印或其它相关学习实例就万分感谢了。
开发环境的搭建就不介绍了哈,大家可以度娘、谷哥一翻。
好啦,不费话了,开始正式编码啦。再废话一下,不知道lua脚本的请度娘、谷哥扫下盲
先创建好项目,如果不懂的,可直接从cocos2d-x的samples下搞个项目过来改改就好。
1)通过lua调用cocos2d-x创建精灵
准备一张精灵的四个方向的行走图片
定义createSprite脚本方法来生成精灵
--创建精灵 local sprite = nil --定义精灵变量 local function createSprite() local layer = CCLayer:create()--定义图层 local frame0 --定义精灵默认显示图片帧 --通过CCSpriteFrame创建帧动画 frame0 = CCSpriteFrame:create("images/spirit001_32.png", CCRectMake(blockWH*0, blockWH*0, blockWH, blockWH)) --按帧动画初始化精灵 sprite = CCSprite:createWithSpriteFrame(frame0) --设置精灵默认起始位置 sprite:setPosition(ccp(winSize.width / 2 - 64, winSize.height / 3)) --把精灵增加入图层 layer:addChild(sprite) return layer --把图层返回,供CCScene用 end
2)通过lua调用cocos2d-x实现精灵帧动画
根据精灵图片特点:第一行为向下行走动画;第二行为向左行走动画;第三行为向右行走动画;第四行为向上行走动画。
--创建精灵帧动画动作 local animation = nil --定义动作 direction:精灵方向(上、下、左、右) local function createAnimaByDirection(direction) local frame0,frame1,frame2,frame3 --定义四帧精灵动画 frame0 = CCSpriteFrame:create("TileMaps/spirit001_32.png", CCRectMake(blockWH*0, blockWH*direction, blockWH, blockWH)) frame1 = CCSpriteFrame:create("TileMaps/spirit001_32.png", CCRectMake(blockWH*1, blockWH*direction, blockWH, blockWH)) frame2 = CCSpriteFrame:create("TileMaps/spirit001_32.png", CCRectMake(blockWH*2, blockWH*direction, blockWH, blockWH)) frame3 = CCSpriteFrame:create("TileMaps/spirit001_32.png", CCRectMake(blockWH*1, blockWH*direction, blockWH, blockWH)) --创建数组,用于存放精灵帧动作 local frameArray = CCArray:create() frameArray:addObject(frame0) frameArray:addObject(frame1) frameArray:addObject(frame2) frameArray:addObject(frame3) --通过CCAnimation:createWithSpriteFrames创建动画 --参数1:帧动作数组;参数2:每帧动画播放时间 animation = CCAnimation:createWithSpriteFrames(frameArray, 0.2) animation:setLoops(10) --把动画返回供精灵使用 return CCAnimate:create(animation) end
3)创建菜单控制精灵动画
为了方便实例演示,我们创建四个菜单项来控制精灵的上、下、左、右动画的播放。
--定义菜单项 local menuLeft,menuRight,menuLeft,menuRight,menu --创建控制菜单 local function createControllerMenu() local layer = CCLayer:create() --初始化菜单项 menuLeft = CCMenuItemImage:create("Images/menu/leftNormal.png", "Images/menu/leftPress.png") menuLeft:registerScriptTapHandler(runLeft)--点击处理函数 menuLeft:setPosition(ccp(menuLeft:getContentSize().width/2*3/2, menuLeft:getContentSize().height*2))--菜单项位置 menuUp = CCMenuItemImage:create("Images/menu/upNormal.png", "Images/menu/upPress.png") menuUp:registerScriptTapHandler(runUp) menuUp:setPosition(ccp(menuLeft:getContentSize().width/2*3/2+menuLeft:getContentSize().width, menuLeft:getContentSize().height*3)) menuRight = CCMenuItemImage:create("Images/menu/rightNormal.png", "Images/menu/rightPress.png") menuRight:registerScriptTapHandler(runRight) menuRight:setPosition(ccp(menuLeft:getContentSize().width/2*3/2+menuLeft:getContentSize().width*2, menuLeft:getContentSize().height*2)) menuDown = CCMenuItemImage:create("Images/menu/downNormal.png", "Images/menu/downPress.png") menuDown:registerScriptTapHandler(runDown) menuDown:setPosition(ccp(menuLeft:getContentSize().width/2*3/2+menuLeft:getContentSize().width, menuLeft:getContentSize().height)) --创建菜单 menu = CCMenu:create(); menu:addChild(menuLeft)--把菜单项加入到菜单 menu:addChild(menuUp) menu:addChild(menuRight) menu:addChild(menuDown) menu:setPosition(ccp(0, 0)) --把菜单加入到图层 layer:addChild(menu) return layer end --精灵向左行走动画 local function runLeft() sprite:runAction(createAnimaByDirection(left))--步骤2中的方法创建 end --其它方向的行走动画控制方法与runLeft相同,所以不详细列出。 --其中 left:1;down:0;right:2;up:3分别对应精灵图片的相应方向
至此,我们就完成了通过lua脚本调用cocos2d-x实现精灵创建、精灵行走动画控制的脚本代码编写了。
运行结果是:按下左行走菜单时播放精灵向左行走动画;按下右行走菜单时播放精灵向右行走动画;按下下行走菜单时播放精灵向下行走动画;按下上行走菜单时播放精灵向上行走动画。
4)通过lua脚本调用cocos2d-x创建tmx地图
Tiled 这个地图编辑工具可以编辑了2D的很多很多游戏地图,只要你想得到的都行,具体使用方法及软件下载安装大家度娘一下就有一堆资料了,这里就不啰嗦了。
先用tiled创建好地图文件如:test-tilemap.tmx然后就可以写lua脚本进行创建操作啦,代码如下:
--创建tmx地图图层 local function CreateTileMapLayer() local layer = CCLayer:create() --以文件名方式创建TMX地图 local map = CCTMXTiledMap:create("TileMaps/test-tilemap.tmx") layer:addChild(map)--把tmx地图添加到图层 return layer end
简单吧
几行脚本即可创建出tmx地图图层了。当然这只是个例子,具体游戏中还会有更多的事件要处理的了。
5)显示到手机屏幕
把以上步骤中创建的各个图层加入到场景中,然后就可以显示到手机屏幕上啦。
--创建场景 local scene = CCScene:create() scene:addChild(CreateTileMapLayer())--把tmx地图层加入场景 scene:addChild(createSprite())--把精灵层加入场景 scene:addChild(createControllerMenu())--把控制菜单层加入场景 CCDirector:sharedDirector():replaceScene(scene)--把场景显示到手机屏幕上
6)小结
本文中的可能有部分变量定义未列出,大家在编码时发现少了的话就自己local xxx定义一下即可。
好啦,先写到这里了。还有好多东西都不懂,所以还得好好学习。
感谢大家看完本文
同时也希望本文能给到你少少的学习帮助或参考。
如果你觉得本文有帮助的话请评论一下,赞一个哦
相关文章推荐
- 【iOS-Cocos2d游戏开发之二十一 】自定义精灵类并为你的精灵设置攻击帧以及动画创建!【一】
- 【iOS-cocos2d-X 游戏开发之八】使用Lua脚本进行游戏开发(基础篇) 推荐
- 【iOS-Cocos2d游戏开发之二十一 】自定义精灵类并为你的精灵设置攻击帧以及动画创建!【二】 推荐
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的”.pvr.ccz”,”.plist”共用的终极精灵优化及注意事项!
- iOS开发——高级技术&调用地图功能的实现
- Cocos2d-x教程(26)-Cocos2d-x + Lua脚本实现大地图缩放功能
- IOS游戏开发之cocos2d-x实现手机振…
- Cocos2d-x Lua游戏开发之Lua oo 的实现
- 【学习笔记】【Cocos2d-x Lua脚本开发】如何使用Lua脚本调用自定义类
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的”.pvr.ccz”,”.plist”共用的终极精灵优化及注意事项!
- IOS游戏开发之cocos2d-x实现自定义…
- 【iOS-cocos2d-X 游戏开发之四】Cocos2dX创建Android NDK新项目并编译导入Eclipse中正常运行!
- iphone游戏开发之cocos2d (七) 自定义精灵类,实现精灵动画CCAnimation
- 小小菜之Cocos2d-x游戏开发旅程——Lua之摇杆实现
- 【iOS-cocos2d-X 游戏开发之四】Cocos2dX创建Android NDK新项目并编译导入Eclipse中正常运行!
- [ IOS-Cocos2d-x 游戏开发] - Lua 开发之一(Lua-基础语言学习)
- 【iOS-Cocos2d游戏开发之二十二 】CCSpeed实现CCAnimate动画进行时设置慢动作以及设置游戏加减速进行(塔防游戏必备)! .
- 【iOS-Cocos2d游戏开发之二十一 】自定义精灵类并为你的精灵设置攻击帧(指定开始帧)以及扩展Cocos2d源码的CCAnimation简化动画创建!
- [ IOS-Cocos2d-x (Box2d)游戏开发之一] -简单创建一个Box2D
- 【iOS-Cocos2d游戏开发之二十二 】CCSpeed实现CCAnimate动画进行时设置慢动作以及设置游戏加减速进行(塔防游戏必备)! .