如何实现字幕效果,cocos2dx lua 加密

The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.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。
做一个简单快乐的程序员。
原文地址:, 感谢原作者分享。
您可能感兴趣的代码如何实现字幕效果,cocos2dx Lua_百度知道quick-cocos2d-x教程10:实现血条效果。 - 推酷
quick-cocos2d-x教程10:实现血条效果。
血条是常见功能,可以通过一个血条背景和一个不断改变得血条宽度,来实现少血。
在MainScence.lua中,先改代码:
function MainScene:ctor()
&& &local bg = display.newSprite(&bg01.jpg&)
&&& bg:setPosition(display.cx, display.cy)
&&& self:addChild(bg)
&& &local barBg = display.newSprite(&barBg.png&)
&&& barBg:setPosition(display.cx, display.cy)
&&& self:addChild(barBg)
&& &--血条的原始尺寸,是185*100,可以定时改宽度185的值
&& &local barBlood = display.newScale9Sprite(&barBlood.png&,0,0,CCSize(185, 10))
&&& barBlood:setPosition(display.cx, display.cy)
&&& self:addChild(barBlood)
bg01.jpg是背景图,上个例子已经写了
barBg.jpg血条的背景图,主要是美观好看。
barBlood是绿色的血条,注意他是九宫格的图,就是可以拉升不变形的
我们看下display.lua中的例子:
-- 创建一个 Scale9 图像,并拉伸到 400, 300 点大小
local sprite = display.newScale9Sprite(&Box.png&, 0, 0, CCSize(400, 300))
@param string filename 图像名
@param integer x
@param integer y
@param CCSize size
@return CCSprite9Scale CCSprite9Scale显示对象
function display.newScale9Sprite(filename, x, y, size)
&& &return display.newSprite(filename, x, y, {class = CCScale9Sprite, size = size})
我们可以把CCSize(185, 10)宽度调整,比如改成CCSize(90, 10),然后每次被击中,就动态改这个值,就实现血条功能。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致下次自动登录
现在的位置:
& 综合 & 正文
cocos2dx lua中使用class实现继承api中的类
如果需要扩展api中的类时,使用继承的方式,需要重写的就重写,需要扩展就扩展
直接上,代码中有解释
require "extern"
--使用class方法需要的extern.lua模块
--调用父类方法
function getSuperMethod(table, methodName)
local mt = getmetatable(table)
local method = nil
while mt and not method do
method = mt[methodName]
if not method then
local index = mt.__index
if index and type(index) == "function" then
method = index(mt, methodName)
elseif index and type(index) == "table" then
method = index[methodName]
mt = getmetatable(mt)
return method
--自定义类继承sprite,前提是这个sprite必须先绑定好c++中的sprite
MyCustom = class("MyCustom",function(filename)
--通过返回一个sprite实现继承sprite类,
return cc.Sprite:create(filename)
--这里的function就是下面的MyCustom.new
MyCustom.__index = MyCustom
--索引访问
MyCustom.aaa = 0
--定义属性及对应值
function MyCustom:create(filename , aaa)
local mySpr = MyCustom.new(filename)
--这里使用的是''.",不是":"
self.aaa = aaa
--设置属性值
return mySpr
-- 实现重写父类方法
function MyCustom:setVisible(visible)
getSuperMethod(self, "setVisible")(self, visible) --调用父类方法并传递参数
print("override setVisible method")
&&&&推荐文章:
【上篇】【下篇】

我要回帖

更多关于 cocos2dx lua socket 的文章

 

随机推荐