|  |  |  |  | # 怪物制作文档
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ## 1.动画导出配置
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 编辑 `arts\character\config.json`如下: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     "ASEPRITE_PATH": "D:/Steam/steamapps/common/Aseprite/aseprite.exe", | 
					
						
							|  |  |  |  |     "TARGET_DIR": "E:/Mahogany/client/Assets/Resources/Character/", | 
					
						
							|  |  |  |  |     "END_PAUSE": false | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | | 字段          | 含义                                    | | 
					
						
							|  |  |  |  | | ------------- | --------------------------------------- | | 
					
						
							|  |  |  |  | | ASEPRITE_PATH | 本机 aseprite.exe 的路径                | | 
					
						
							|  |  |  |  | | TARGET_DIR    | 本机 client/Assets/Resources/Character/ | | 
					
						
							|  |  |  |  | | END_PAUSE     | 是否完成后按任意键关闭,false为自动关闭 | | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ## 2.动画文件
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### 1.创建文件夹
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 在 `arts\character\monster` 下新建文件夹,名字为新怪物的名字,例如: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### 2.基础移动动画组
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 基础动画组包含除了技能之外的所有动画。包括待机、移动、受击、死亡等。所有角色公用一个动画状态机,通过自动生成的方式覆盖默认动画。基础移动动画文件从已有的模板文件复制并修改。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 复制模板 `arts\character\basic\move.aseprite` 到新建文件夹: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 编辑`move.aseprite`: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    原则上只需要保证不修改已有tag即可。可以任意修改帧数、图层等。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Layer2是基础测试怪的动画,可以作为动画参考。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Layer3是背景,原则上不需要保证动画的地面高度和示例一致,可以通过配置来修改高度。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    各个tag的含义: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    | tag          | 含义                       | | 
					
						
							|  |  |  |  |    | ------------ | -------------------------- | | 
					
						
							|  |  |  |  |    | idle         | 待机                       | | 
					
						
							|  |  |  |  |    | run1         | 起跑动作                   | | 
					
						
							|  |  |  |  |    | run2_loop    | 奔跑循环动作               | | 
					
						
							|  |  |  |  |    | run3         | 停止奔跑动作               | | 
					
						
							|  |  |  |  |    | jump1        | 起跳准备                   | | 
					
						
							|  |  |  |  |    | jump2_loop   | 跳跃上升                   | | 
					
						
							|  |  |  |  |    | jump3        | 跳跃到最高点的过渡动作     | | 
					
						
							|  |  |  |  |    | jump4_loop   | 跳跃下降                   | | 
					
						
							|  |  |  |  |    | jump5        | 落地                       | | 
					
						
							|  |  |  |  |    | hit1         | 受击开始                   | | 
					
						
							|  |  |  |  |    | hit2_loop    | 受击持续、硬直             | | 
					
						
							|  |  |  |  |    | hit3         | 受击恢复                   | | 
					
						
							|  |  |  |  |    | die1         | 死亡动画                   | | 
					
						
							|  |  |  |  |    | die2_loop    | 死亡最后的静止动作         | | 
					
						
							|  |  |  |  |    | airhit1      | 空中受击开始               | | 
					
						
							|  |  |  |  |    | airhit2_loop | 空中受击上升               | | 
					
						
							|  |  |  |  |    | airhit3      | 空中受击到最高点的过渡动作 | | 
					
						
							|  |  |  |  |    | airhit4_loop | 空中受击下落               | | 
					
						
							|  |  |  |  |    | airhit5      | 空中受击落地               | | 
					
						
							|  |  |  |  |    | airhit6_loop | 倒地状态                   | | 
					
						
							|  |  |  |  |    | airhit7      | 倒地起身                   | | 
					
						
							|  |  |  |  |    | rebound      | 击落触地反弹               | | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    tag不用修改。后续有修改的话需要注意命名规则: | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  |    1. 下划线`_`开头的不会导出 | 
					
						
							|  |  |  |  |    2. `_loop`结尾的生成的动画是循环的 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  |    如果初期版本比较简单不分图层,可以在body层画。导出的时候会导出所有可见图层,所以需要提前隐藏Layer2和Layer3。 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 3. 运行导出脚本 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    双击`exportAll.exe`即可。生成的动画会按目录保存在`config.json`里面定义的生成路径。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 4. 运行动画生成和绑定的unity内置工具 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    这样就会自动切图,并且在对应目录生成`.anim`文件。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### 3.技能动画组
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 新建`.aseprite`文件,把对应的动画片段设置tag。导出的时候会按tag一起导出到对应目录。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | tag命名规则同基础移动动画组。对图层、帧数都没有要求。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ## 3.配置档
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 在draft对应目录位置创建怪物实体。建议直接复制已有的来修改。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 单从动画上需要修改的配置项有: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | `动画`即导出动画文件的目录。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | `外观Y轴偏移`即控制怪物动画贴地的偏移值。计算方式为: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. sprite居中显示,默认贴地。所以需要向上偏移 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 规定的ppu为64,即:每1个unity距离单位显示64个像素。也就是说,如果要向上偏移24像素,需要填 24/64 = 0.375 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ## 4.配置档导出
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 导出draft | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    第一次导出需要设置导出路径,之后都可以快速导出: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    2. 点回unity窗口,进入一个自动导入的过程 。成功或失败都会在控制台有打印。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    3. 如果导出失败(比如修改了结构导致编译失败),则解决错误之后手动导出: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ## 5.测试
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 进入游戏后按回车键呼出GM界面 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 选择右方的Battle按钮 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 3. 点击创建xx怪的按钮,就可以创建出对应怪物。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  |