重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章给大家分享的是有关lua脚本调用cocos2d-x如何创建精灵、Tmx地图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联公司成立与2013年,是专业互联网技术服务公司,拥有项目网站制作、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元阳曲做网站,已为上家服务,为阳曲各地企业和个人服务,联系电话:18982081108各位同学大家好,小编今天在此与各位一起通过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("p_w_picpaths/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)--把场景显示到手机屏幕上
感谢各位的阅读!关于“lua脚本调用cocos2d-x如何创建精灵、Tmx地图”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。