皮肤
角色的身体是一个由格子组成的网格,皮肤决定每个格子画什么:一个形状和皮肤的一种颜色。皮肤还可以关闭眼睛、手、影子和特效。在主菜单的角色中用现成的形状、调色板和网格编辑器组合皮肤,或者手写文件
皮肤只改变外观。碰撞箱、速度和碰撞箱圆环对所有皮肤都一样
角色中心
主菜单中的角色打开一个单独的界面。你的角色在左侧走动,面板占据右半边。左下角的机器人把角色交给你操控,这样你可以在移动中试用皮肤,旁边的伤害滑块显示皮肤在生命值下降时如何失去格子。面板顶部的栏可以跳转到各个部分:
| 部分 | 作用 |
|---|---|
形状 | 现成的形状,连同它们自带的眼睛和手一起画出。点击会把形状放到你的皮肤上,并保留你的颜色。圆形和多边形的形状带眼睛,带图案的形状不带。第一张卡片是经典角色:穿戴时连同颜色整套换上 |
颜色 | 身体颜色和眼睛。先选目标,再选颜色。手、拖尾和冲刺色调会自动跟随你的颜色 |
身体部件 | 每个按钮开启或关闭角色的一个部分 |
编辑器 | 网格本身:它的大小、格子里的部件,每个部件的形状、颜色、旋转、镜像和缩放,以及你自己的形状 |
右上角的随机给你的皮肤一个随机的形状和随机的颜色。穿着经典角色时这个按钮不可用。旁边的我的皮肤列出你的皮肤文件:点击其中一个就会穿上它,按钮可以导出、删除、导入和复制。创建皮肤用一个随机形状和随机颜色创建新皮肤。游戏无法读取的文件也可以在那里删除
每次修改都会立即保存。对经典角色的第一次修改会创建一个新的皮肤文件,之后你穿戴的就是这个文件
编辑器
绘制把选中的部件放进格子,擦除把格子清空。在网格上拖动可以一次处理多个格子部件列出格子可以画的内容。+复制选中的部件,-删除它,它的格子改用第一个部件- 选中的部件使用一个内置形状或皮肤自己的形状。
新建网格画一个新形状:先放置点,再把其中三个点连成一个三角形 列和行调整网格大小。格子是正方形的,所以高大于宽的网格会做出一个瘦高的身体向左旋转和向右旋转把整个皮肤旋转四分之一圈:网格和每个部件都随之转动
皮肤的上方就是它的正面:角色会转向,让正面朝着移动的方向
破坏身体的修改(格子太少,或者格子分成了两块)不会保存。原因会显示在网格下方,直到你修正为止
皮肤保存在哪里
在数据文件夹中的skins文件夹里(安装)。一个皮肤就是一个.json文件。旁边的selection.json记住你穿戴的是哪个皮肤
- 在电脑上,
打开文件夹会打开该文件夹 - 在手机上,使用
导入和导出:它们会打开系统的文件选择器
皮肤会随个人资料迁移和Steam Cloud一起转移。更多:转移档案
文件
这是一个导出的皮肤(有删节):
{"g":3,"v":{
"id":"9b2f0d64-1c3a-4e8b-8f21-6a0c5d7e9f13",
"name":"Hex knight",
"size":1.0,
"columns":5,"rows":5,
"mask":60651675406,
"cells":[0,0,0,0,1,1,1,0,0,1,2,1,0,0,1,1,1,0,0,0,0],
"parts":[
{"shape":"00000000-0000-0000-0000-000000016000","color":0},
{"shape":"00000000-0000-0000-0000-000000001000","color":1,"scale":0.9},
{"shape":"4d1f6c2a-7b3e-4f10-9a55-2c8e01b7d001","color":2,"rotation":90.0,"mirror":true}
],
"colors":[[0,{"r":0.51,"g":0.76,"b":0.96,"a":1.0}],[0,{"r":0.2,"g":0.4,"b":0.9,"a":1.0}],[0,{"r":1.0,"g":1.0,"b":1.0,"a":1.0}]],
"meshes":[{"id":"4d1f6c2a-7b3e-4f10-9a55-2c8e01b7d001","vts":[[0,{"x":-0.5,"y":-0.5}],[0,{"x":0.5,"y":-0.5}],[0,{"x":0.0,"y":0.5}]],"idxs":[0,1,2]}],
"elements":125
}}
g是文件格式的代,v中是皮肤本身。最简单的开始方式是导出一个皮肤并编辑副本
| 键 | 含义 |
|---|---|
id | 皮肤的身份:它自己的GUID。游戏用它给文件命名,但按这个键查找皮肤,所以文件名无关紧要 |
name | 列表中显示的名称 |
size | 身体画多大,是经典角色的0.6到1.25倍。碰撞箱不变 |
columns, rows | 网格的宽和高,从3到8。格子是正方形的:较长的一边撑满整个身体 |
mask | 哪些格子被填充,用一个64位数字表示:第x列、第y行的格子是第y * 8 + x位,第0行在最下面。无论columns是多少,每行总是8位宽 |
cells | 每个填充的格子画的部件,是parts中的索引,按位从低到高的顺序排列。留空则每个格子都画部件0 |
parts | 格子画什么:shape(内置形状的id,或皮肤某个meshes的id)、color(colors中的索引)、rotation(角度)、mirror和scale(格子的0.2到1.0) |
colors | 身体颜色,1到8种。颜色写作[0,{"r":…,"g":…,"b":…,"a":…}],每个通道从0到1 |
meshes | 最多32个皮肤自己的形状:一个id(任何不属于内置形状的GUID)、位于-0.5到0.5方框内的点vts和三角形idxs,每个三角形三个点 |
elements | 画出角色的哪些部分,用以下数值之和表示:眼睛为1、手为2、影子为4、拖尾为8、冲刺拖尾为16、受击特效为32、冲刺色调为64。127画出全部。新皮肤从125开始,即除了手以外的全部。网格总是会画出 |
eyes, hands, shadow, move_effect, dash_effect, damage_effect, dash_body | 角色其余部分的颜色,写法与colors相同。在elements中关闭的部分会保留其颜色 |
省略的键使用经典角色的值。内置形状的id最容易从导出的皮肤中复制:形状中带图案的现成形状只使用内置形状。手写的文件可以省略id,导入会给它一个
皮肤必须遵守的规则
columns和rows为3到8,并且mask不填充这个范围之外的格子- 至少填充
5个格子,并且它们都通过边相互接触:身体是一整块 cells为空,或者为每个填充的格子恰好提供一个部件- 最多
64个部件,并且每个部件的形状和颜色都存在 - 身体和影子的不透明度至少为
0.5
违反规则的皮肤在我的皮肤中显示为灰色并注明原因,无法穿戴。具有相同id的第二个文件也是如此。如果穿戴中的皮肤损坏,会画出经典角色,而你的选择会被保留。由更新版本的游戏写入的皮肤会显示需要更新版本的游戏
生命值
生命值只由填充的格子显示。失去的格子从边缘到中心留作暗色残影,只要还剩一点生命值,最后一个格子就会保持亮着。填充的格子越少,每个格子代表的生命值就越多。更多:伤害与生命