cocos2dx内存使用查看游戏怎么使用脚本

cocos2dx开发游戏,如果可以使用C++做出来,是不是不用lua,全用C++做更好呢? - 知乎51被浏览4556分享邀请回答178 条评论分享收藏感谢收起2414 条评论分享收藏感谢收起查看更多回答Cocos2dx Lua实现ARPG游戏 - 为程序员服务
Cocos2dx Lua实现ARPG游戏
前前后后一共花了差不多快一个月的时间做了个Lua的Cocos2dx的游戏demo,也是在边学习边写。今天终于完工了,这里分享出来~
demo的exe下载地址:http://notes-wordpress./Assassins.exe
运行说明:
双击Assassins.exe点击Play即可,需要VC环境,否则提示缺少dll文件。
操作说明:
鼠标控制行走,按“A”键攻击。
小怪:蝙蝠
大怪:白象
一、 开发环境
Cocos2dx 3.3 RC0
Visual Studio 2013
Cocos Code IDE
1.1.0 (内置Lua5.1)
使用到的工具:
Tiled地图编辑器
UI编辑器CocoStudio
纹理打包工具TexturePacker
二、 游戏说明
1. 游戏素材
游戏素材比较难找,这里参考了“梦幻西游”论坛的一些方法和网友的共享获取到了“梦幻西游”游戏的一些资源,同时也采用了其他游戏的一些资源。包括:
游戏场景:(2D的斜视角图片)
英雄:(龙太子角色)
8方向行走、站立和4方向的打斗动画(没有8个方向的打斗动画)
蝙蝠,只有4方向的行走动画
白象,4方向的行走、打斗和站立动画
如血条,小头像,技能等,通过收集的素材PS完成。
2. 游戏截图
左上角为英雄信息条,包括小头像,红条,蓝条信息。
中间为英雄角色
左下方为怪物
最下方为英雄技能信息,目前只有1个可施放技能。
3. 游戏功能点列表
游戏的地图为的大地图,窗口设置成800×600,分辨率为,使整个场景看上去符合自然情况。
英雄的走动速度为200,从地图一端到另一端的时间约是15s。
场景中怪物出生位置固定,运动方向随机,小怪(蝙蝠)9个,大怪(白象)6个。
实现了英雄8方向的行走。(由于键盘不方便控制8个方向,这里采用鼠标控制)
角色行走的一个主要功能点是保持角色在屏幕中央,见第三部分的设计说明。
攻击和打斗
英雄有1个攻击技能,按键盘的“A”键即可触发,触发后技能图标会变灰色,表示技能在CD中,1.5s左右后恢复。施放技能时英雄角色会发出类似“标枪”的技能攻击效果。
英雄不会自动攻击,必须手动重复施放技能。怪物被攻击到后会移动到英雄身边,自动攻击。
怪物设计成不主动攻击英雄,有随机的巡逻路线,巡逻方式为:
原地站立—> 跑动到目标地点–>目标地点站立–>回到原地
巡逻时的方向、跑动的时间和整个持续时间随机。
怪物被攻击后,若英雄跑开,怪物会跟踪攻击,跟踪的范围为300,超过300则返回到原位置继续巡逻,血量不会恢复。
英雄: 红800,蓝500,技能伤害50,技能耗蓝20,攻击范围100.
蝙蝠: 红200,伤害20
白象: 红500,伤害50
自动恢复:
英雄每秒恢复2红2蓝,怪物不自动恢复。
其他功能点和效果
英雄和怪物被攻击时都会闪烁2次。
怪物死亡时闪烁4次,并从地图中消失。
英雄死亡时游戏结束。
三、 设计架构说明
1. 整体设计
只设计了一个主场景,场景Layer和Sprite的层级关系如下:
MapLayer中包含了所有角色实体,Hero和Monsters。
InfoLayer中包含了Hero的HP和MP信息。
Monster的子节点为HP信息。
Hero还有个Weapon子节点,在进入攻击状态时显示。
2. 主要功能点设计
地图为2D的斜视角地图,通过TiledMap将整个地图设计成3层,第一层为背景,第二层为访问标记层,指出可以访问的区域,第三层为实体层,用来固定实体角色的位置。如下所示:
没有实现寻路算法,英雄走直线。
行走的判断过程:
1. 判断鼠标点击位置和当前位置的关系,选择不同的朝向动画;
2. 判断当前位置到点击点上的直线上是否有障碍物,是否有怪物,获取最近的可以到达点;
3. 修改当前状态为RUN,播放行走动画,移动角色到目标点;
保证角色始终在屏幕中央,实现原理是英雄移动时,地图按相反方向移动,同时要注意角色在地图边界的情况。
在地图中央时,英雄要移动的点为A(x,y),屏幕中心为B(W/2,H/2),为使英雄到目标点,通过设置地图的位置为(B-A)即可
在边界时,需判断实际的x和y。
怪物在STAND状态下才会进入巡逻状态,启动一个11到13秒随机的巡逻定时器,进入其他状态时则停止此定时器。
巡逻需设定好动作的先后执行关系,同时设定动作回调,在另一个动作启动时取消前面的一部分动作;这里需要CC.Spawn和CC.Sequence动作的组合;如
self:runAction(cc.Sequence:create(
cc.DelayTime:create(2), –延时
–移动
cc.DelayTime:create(2),
cc.CallFunc:create(callbackfunc), –取消部分动作
cc.Spawn:create(animate_rev,move_rev) –返回
在受到英雄攻击时进入FIGHT状态,改变其朝向并移动到英雄身边。
怪物跟踪攻击
在进入FIGHT状态时,启动跟踪攻击定时器,每0.4s判断英雄的当前位置B,上次位置A,同时已知怪物位置C。
动画管理器
动画管理器AnimationManager为单例,保存英雄,怪物,技能的所有动画。通过向其传递 动画类型、动画方向、循环次数来获得Animation从而获得Animate。
这里需要说明的是保存的Animate会被自动回收,retain时也会有一些bug,而Animation不会,故动画管理器保存的都是Animation。
做一个简单快乐的程序员。
原文地址:, 感谢原作者分享。
您可能感兴趣的代码主题 : LUA脚本是如何在COCOS2DX中应用的?
级别: 新手上路
可可豆: 13 CB
威望: 13 点
在线时间: 3(时)
发自: Web Page
来源于&&分类
LUA脚本是如何在COCOS2DX中应用的?&&&
最近刚学COCOS2DX,对于LUA定位有些迷惑,我查资料掌握的情况是这样:1、AppDelegate中编写一段代码,余下开发都用LUA。2、大部分核心代码用C++开发,逻辑用LUA开发,这里用到LUABINDING的技术,理解的对嘛?求大神解惑,还有传授些C++和LUA混合使用的经验。
级别: 新手上路
UID: 233972
可可豆: 75 CB
威望: 49 点
在线时间: 63(时)
发自: Web Page
核心&&逻辑……怎么划分
级别: 新手上路
可可豆: 13 CB
威望: 13 点
在线时间: 3(时)
发自: Web Page
回 1楼(喵喵丸) 的帖子
我感觉也是靠经验的
级别: 侠客
UID: 283889
可可豆: 744 CB
威望: 740 点
在线时间: 285(时)
发自: Web Page
核心就是引擎&&自己写的逻辑基本都可以用lua
级别: 新手上路
可可豆: 13 CB
威望: 13 点
在线时间: 3(时)
发自: Web Page
回 3楼(humanfd) 的帖子
那直接用第一种,全部用LUA代码不就行了吗?LUABINDING用来做什么的?
级别: 侠客
UID: 283889
可可豆: 744 CB
威望: 740 点
在线时间: 285(时)
发自: Web Page
大部分C++ 少部分lua的项目 会频繁使用luabinding&&不过这个多出现于早期 cocos2dx和lua没有达到无缝连接的时候
级别: 新手上路
可可豆: 60 CB
威望: 60 点
在线时间: 79(时)
发自: Web Page
希望以后c++和lua的可以像html与js的关系一样,哈哈!
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版}

我要回帖

更多关于 cocos2dx 更新lua脚本 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信