前段时间用cocos2d-x写了一段rpg游戏程序,主要完成了地图绘制和人物行走。先看一下模拟器运行的主界面。
这里把咱的博客主页做为背景也截下来了,心机中...
开发工具用的是官方提供的Cocos Creator,具体哪个版本忘记了。编程语言选择的是JS,用JS来写cocos2d程序也是官方推荐的一种做法。可以生成浏览器运行的H5页面(WebGL渲染)。也可以打包成手机Android和ios程序。IDE开发环境截图如下
界面的绘制用的是瓦片地图,有内置的控件可以用,具体看cocos2d-js的api。程序文件就2个,Script目录下的ControlPanel和RoleSprire文件。其他文件都是项目用到的资源及配置组件。ControlPanel为下一步要做的场景程序,目前是内容是空的
RoleSprire.js是主场景绑定的入口程序,代码如下
cc.Class({ extends: cc.Component, properties: { move_num:0, move_direction:"down", isTouch:false, roleScheduler:null }, // use this for initialization onLoad: function () { this.initNode(); var _this=this; this.role.schedule(function() { if(_this.isTouch){ _this.move(_this.move_direction); } }, 0.1); }, initNode: function () { this.role=cc.find("Sprite").getComponent(cc.Sprite); this.cp={ up:cc.find("ControlPanel/up"), down:cc.find("ControlPanel/down"), left:cc.find("ControlPanel/left"), right:cc.find("ControlPanel/right"), }; var _this=this; cc.loader.loadRes("tianming/tm", cc.SpriteAtlas, function (err, atlas) { _this.spriteFrames=atlas; }); //绑定控制面板事件 this.cp.up.on(cc.Node.EventType.TOUCH_START,function(event){_this.move("up")}); this.cp.down.on(cc.Node.EventType.TOUCH_START,function(event){_this.move("down")}); this.cp.left.on(cc.Node.EventType.TOUCH_START,function(event){_this.move("left")}); this.cp.right.on(cc.Node.EventType.TOUCH_START,function(event){_this.move("right")}); this.cp.up.on(cc.Node.EventType.TOUCH_END,function(event){_this.isTouch=false;}); this.cp.down.on(cc.Node.EventType.TOUCH_END,function(event){_this.isTouch=false;}); this.cp.left.on(cc.Node.EventType.TOUCH_END,function(event){_this.isTouch=false;}); this.cp.right.on(cc.Node.EventType.TOUCH_END,function(event){_this.isTouch=false;}); }, // called every frame, uncomment this function to activate update callback update: function (dt) { }, //行走 move:function(f){ var _this=this; this.isTouch=true; if(this.move_direction==f){ //上次行走方向和本次方向一致,移動位置++ this.move_num++; }else{ this.move_num=0; this.move_direction=f; } switch(this.move_direction){ case "up":{ this.role.node.setPositionY(this.role.node.getPositionY()+10); switch(this.move_num%3){ case 0: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('up-01'); break; case 1: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('up-02'); break; case 2: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('up-03'); break; } }break; case "down":{ this.role.node.setPositionY(this.role.node.getPositionY()-10); switch(this.move_num%3){ case 0: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('down-01'); break; case 1: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('down-02'); break; case 2: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('down-03'); break; } }break; case "left":{ this.role.node.setPositionX(this.role.node.getPositionX()-10); switch(this.move_num%3){ case 0: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('left-01'); break; case 1: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('left-02'); break; case 2: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('left-03'); break; } }break; case "right":{ this.role.node.setPositionX(this.role.node.getPositionX()+10); switch(this.move_num%3){ case 0: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('right-01'); break; case 1: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('right-02'); break; case 2: this.role.spriteFrame=this.spriteFrames.getSpriteFrame('right-03'); break; } }break; } });
后面有时间再持续更新!
原创类文章未经允许请勿转载:39点博客 » cocos2d-x RPG游戏实战系列教程:瓦片地图绘制和人物行走