《游戏自定义属性“刀刀切割”实现》教案
课程目标
掌握游戏中自定义属性“刀刀切割”的完整实现流程,包括属性表配置、飘雪效果设置、触发脚本编写及常见问题解决。
一、课程准备
- 工具与环境
- 开发工具:资源工具(用于表格导出/导入)、游戏引擎(需重启生效)。
- 核心表格:
att_story
表(存储自定义属性配置)。
- 版本差异:传2与传3的
att_story
表基本一致,但传3对自定义属性ID有严格限制(见注意事项)。
- 前置知识
- 熟悉游戏属性表的基础结构(如属性ID、数值类型、显示设置等)。
- 了解飘雪(伤害数字显示)的基本原理(需素材与表格配置配合)。
二、核心内容:刀刀切割属性实现步骤
步骤1:配置自定义属性表(att_story)
- 新建/复制属性
- 在
att_story
表中新建自定义属性(如“刀刀切割”),或复制已有属性(如400号属性)并修改。
- 关键字段说明:
- 属性ID:传3限制为200-299(自定义ID范围),传2无严格限制(建议不超过65535)。
- 数值类型:设为1(表示“加点数”,如加1000点切割)。
- 客户端显示:有属性时显示(设为2);神装固定显示(设为2)。
- 颜色:自定义(如绿色)。
- 角色面板排序:设为200(放至最下方)。
- 战力值(仅传3):1点切割对应战力值(可选填)。
- 导出与生效
- 通过资源工具导出
att_story
表至前端。
- 重启游戏引擎使配置生效。
步骤2:设置飘雪效果(伤害数字显示)
- 飘雪素材准备
- 从其他版本或资源包中获取“刀刀切割”飘雪素材(如
.img
文件),放入项目RES
目录(路径参考:RES\大马哥\
)。
- 飘雪表格配置
- 编辑飘雪样式表(如
当天飘雪样式
),匹配刀刀切割需求:
- 资源路径:填写素材文件名(如
刀切割12.img
)。
- 字符占位符:使用
-
表示负号,.
表示小数点(如“-1000”需占位符匹配)。
- 尺寸调整:根据数字长度调整宽度(如单个数字占14像素,调整至16像素避免显示截断)。
- 其他参数:透明度(30%)、偏移坐标(20,20)、锚点(居中)等。
- 验证与调试
- 导出飘雪表格并重启引擎,测试飘雪显示是否完整、数值是否正确。
步骤3:编写触发脚本(实现切割伤害)
刀切割需通过脚本触发,常见触发场景为物理攻击(attack
)和魔法攻击(magic_attack
)。
- 物理攻击触发(attack)
- 脚本逻辑:判断攻击目标是否为怪物,若是则对其造成“刀刀切割”伤害,并飘雪显示。
- 示例代码:
-- 攻击触发(物理攻击)
if attack == 1 then -- 攻击事件触发
if 目标类型 == 怪物 then -- 判断是否攻击怪物
伤害值 = get_attr(角色, 210) -- 获取210号属性(刀刀切割)的数值
home_HP(怪物, -伤害值) -- 对怪物造成伤害(负值为扣血)
飘雪(12, 伤害值) -- 触发飘雪(12为飘雪ID,伤害值为显示数值)
end
end
- 魔法攻击触发(magic_attack)
- 脚本逻辑:与物理攻击类似,但需使用
px
指令指定攻击目标(远程攻击常用)。
- 示例代码:
-- 魔法攻击触发(如火球术)
if magic_attack == 1 then -- 魔法攻击事件触发
if 目标类型 == 怪物 then -- 判断是否攻击怪物
伤害值 = get_attr(角色, 210) -- 获取刀刀切割数值
home_HP(px, -伤害值) -- 对攻击目标(怪物)造成伤害
飘雪(12, 伤害值) -- 触发飘雪
end
end
三、关键注意事项
- 自定义属性限制
- 传3中自定义属性ID仅允许200-299(官方保留0-199、300+),需提前规划ID避免冲突。
- 自定义属性必须通过脚本实现功能(引擎底层不自动生效)。
- 飘雪调试要点
- 素材路径需与表格配置一致,避免因路径错误导致飘雪不显示。
- 字符占位符(如
-
、.
)需与实际数值格式匹配,否则显示乱码或截断。
- 尺寸调整需根据最大可能数值(如“-10000”)预留足够空间,避免显示不全。
- 攻击目标判断
- 物理攻击(
attack
)使用p
指令(对目标角色),魔法攻击(magic_attack
)远程场景使用px
指令(对攻击目标)。
- 若刀切割仅对怪物生效,需通过
目标类型判断
过滤人物目标。
四、总结与练习
- 总结:刀切割实现需完成“属性配置→飘雪设置→脚本触发”三步,核心是理解属性表规则、飘雪素材适配及攻击目标判断。
- 练习:
- 新建一个“刀刀切割”属性(ID=220),配置显示参数并导出。
- 替换飘雪素材为“火焰切割”,调整飘雪表格解决显示截断问题。
- 编写攻击触发脚本,实现“对怪物造成刀切割伤害并飘雪”。
课后思考:若刀切割需对人物造成真实伤害(无视防御),脚本需如何调整?