更新武器制作流程文档

This commit is contained in:
小李xl 2024-04-16 00:48:46 +08:00
parent d2936004c0
commit 38259c9f95
12 changed files with 107 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -8,6 +8,8 @@
2. 创建子弹预制体和子弹脚本 2. 创建子弹预制体和子弹脚本
3. 在配置表中配置武器和子弹, 并配置武器和子弹的属性 3. 在配置表中配置武器和子弹, 并配置武器和子弹的属性
在本文档中, 预制体=场景
#### 1.创建武器预制体和武器脚本 #### 1.创建武器预制体和武器脚本
@ -120,6 +122,8 @@ public partial class MyGun : Weapon
> 到这里你就会发现, 武器和子弹都包含了 **ShadowSprite**, **AnimatedSprite****Collision** 这三个节点, 那是因为这三个节点是`ActivityObject`类提供的, 而武器和子弹都是`ActivityObject`的子类, 因为游戏中基本上所有的实体物体都是`ActivityObject`或者子类 > 到这里你就会发现, 武器和子弹都包含了 **ShadowSprite**, **AnimatedSprite****Collision** 这三个节点, 那是因为这三个节点是`ActivityObject`类提供的, 而武器和子弹都是`ActivityObject`的子类, 因为游戏中基本上所有的实体物体都是`ActivityObject`或者子类
接下来创建子弹脚本, 子弹没有硬性要求必须继承哪个父类, 相反, 它只需要实现`IBullet`接口即可(路径: `src/game/activity/bullet/normal/IBullet.cs`) 接下来创建子弹脚本, 子弹没有硬性要求必须继承哪个父类, 相反, 它只需要实现`IBullet`接口即可(路径: `src/game/activity/bullet/normal/IBullet.cs`)
但是我们上面的操作复制的是`Bullet0001.tscn`场景, 该场景为`ActivityObject`场景, 所以我们的代码需要继承`ActivityObject` 但是我们上面的操作复制的是`Bullet0001.tscn`场景, 该场景为`ActivityObject`场景, 所以我们的代码需要继承`ActivityObject`
@ -152,3 +156,106 @@ public partial class MyBullet : ActivityObject, IBullet
#### 3.在配置表中配置武器和子弹, 并配置武器和子弹的属性 #### 3.在配置表中配置武器和子弹, 并配置武器和子弹的属性
游戏中配置表路径: `excel/`, 注意在godot工程根目录下
不过也有快捷按钮, 在godot编辑器中
<img src="assets/image-20240415232132040.png" alt="image-20240415232132040" style="float:left"/>
先认识以下几张表
<img src="assets/image-20240415232554395.png" alt="image-20240415232554395" style="float:left"/>
**ActivityBase.xlsx**: 负责注册`ActivityObject`物体, 所有继承自`ActivityObject`的场景都需要在这张表中填写配置信息, 这张表包含`物体id`, `物体名称`, `物体品质`, `物体类型`, `物体物理材质`, `预制体路径`等基本数据
**WeaponBase.xlsx**: 负责记录武器属性数据, 比如`弹容量`, `射速`, `散射值`, `连发属性`, `射出的子弹`, `音效`
**BulletBase.xlsx**: 负责记录子弹的属性数据, 比如`伤害`, `击退值`, `子弹速度`, `射程`, `穿透次数`, `反弹次数`
##### 第一步我们我们需要把子弹和物体都配置到`ActivityBase.xlsx`表中
武器: 填上id和名称, 物体类型为5, 再填上预制体路径和图标即可
<img src="assets/image-20240415234801153.png" alt="image-20240415234801153" style="float:left"/>
子弹: 同样填上id和类型, 因为不需要显示在编辑器中, 名称可以不填, 再填上预制体路径即可
<img src="assets/image-20240415235034598.png" alt="image-20240415235034598" style="float:left"/>
想偷懒可以直接复制其他行数据粘贴再改一改就行了
##### 第二步把子弹属性填写到`BulletBase.xlsx`表中
子弹表字段不多, 描述基本上都介绍的非常详细了
<img src="assets/image-20240416002316491.png" alt="image-20240416002316491" style="float:left"/>
这里提醒一下`Prefab`字段, 当`Type`字段值不同时, `Prefab`填的内容也不相同
这张表Id建议和`ActivityBase.xlsx`表中的`Id`的最后的一串数字对应
##### 第三步把武器属性填写到`WeaponBase.xlsx`表中
武器表字段非常多, 武器各种属性区分的非常详细, 这里截图不会展示所有字段, 仅保留需要注意的字段
<img src="assets/image-20240415235823784.png" alt="image-20240415235823784" style="float:left"/>
这张表需要注意的是一把武器需要填写两条武器数据, 这样做的目的就是为了让敌人拾起武器时不会像玩家一样可以一直连续开火, 那样太变态了, 为了限制敌人发射频率, 我们直接把武器属性抽成两份配置, 当玩家拾起武器时使用的是玩家配置, 当敌人拾起的时候就或读取属性较弱的ai配置了
这里玩家武器属性的Id建议和`ActivityBase.xlsx`表中的`Id`的最后的一串数字对应
Ai使用的武器属性有个潜规则, 就是`玩家属性id+_ai`, 注意不要写错, 比如玩家使用的武器id为`0001`, 那么Ai的武器id就是`0001_ai`
玩家使用的武器属性必须填写`Activity`这一列
其他字段
<img src="assets/image-20240416000723735.png" alt="image-20240416000723735" style="float:left"/>
**Bullet**: 射出的子弹, 填子弹`ActivityBase.xlsx`表中的`Id`
**Shell**: 抛出的弹壳, 填子弹`ActivityBase.xlsx`表中的`Id`, 没有弹壳可以不填, 注意, 本文档没有介绍如何创建弹壳, 但本质流程和子弹相同, 并且弹壳没有额外逻辑, 所以制作弹壳比制作子弹简单, 这里自己摸索一下即可, 弹壳预制体路径: `res://prefab/shell/`
**ShootSound**: 射击播放的音效, 这个填`Sound.xlsx`表`Id`, 也就是音效表的数据Id, 本文档没有介绍音效表, 该表比较简单, 可以自己查看配置项
`ShootSound`字段后面还有几个音效相关的属性, 例如`换弹音效`, `上膛音效`等, 这里都不做赘述了
最后需要注意一下这个字段, 用于Ai武器的一些额外配置选项`AiAttackAttr`, 值为`AiAttackAttr.xlsx`表`Id`
<img src="assets/image-20240416001828298.png" alt="image-20240416001828298" style="float:left"/>
`AiAttackAttr.xlsx`表中有以下字段
<img src="assets/image-20240416002232817.png" alt="image-20240416002232817" style="float:left"/>
如果以上所以配置都填写完成后, 那么就可以进行最后一步导出表数据到游戏中了
##### 第四步导出表数据
非常简单, 在Godot编辑器中点击`工具`, `导出Excel表`按钮即可
<img src="assets/image-20240416003121335.png" alt="image-20240416003121335" style="float:left"/>
但是注意, wps在打开excel表时会占进程, 导致导出表失败, **所以在导出表前一定要先关闭所有打开的excel表!**
如果导表最终弹出以下弹窗说明导表成功
<img src="assets/image-20240416003453585.png" alt="image-20240416003453585" style="float:left"/>
**Tips**: Godot工程中的导表攻击并不是编译好的二进制版本程序, 而是源代码, 第一次调用导表时会调用本机的`dotnet`命令编译导表工具, 次步骤请确保安装了`.net8`并`dotnet`命令可以正常使用