车身布局 VehicleLayout
车包里写在 vehicles/<名字>.json 的 layout 节,字段名同下表(Java:new VehicleLayout.Builder(),填完 build())。下面除了标注「模型坐标」的,都是车身坐标(前、右、上)。
| 字段 | 含义 |
|---|---|
body | 停着时的碰撞盒(玩家能站在车顶、被车挡住),几个 Box 拼出车形 |
rainShell | 挡雨的外壳(RainPart:一个盒子,可以用一个斜面切掉一角,不切写 0, 0, 1) |
cabCushion cabFloor | 前排坐垫顶面高度、驾驶室地板高度 |
seats | 座位:第 1 个是驾驶座,第 2 个是副驾驶;Seat(前, 右, 坐垫高, 朝向, 转头角度, 在驾驶室里, 在右边) |
wheelX wheelY wheelZ | 方向盘中心(模型坐标) |
columnY columnZ | 转向柱方向(模型坐标,单位向量的 Y 和 Z,指向仪表台) |
rim | 方向盘半径 |
steeringRatio | 方向盘转角和前轮转角之比 |
hingeX hingeZ | 车门铰链(模型坐标;左右对称) |
pull outer entry | 车门内拉手、外把手、上车时人站的位置 |
shiftPivot shiftKnob | 换挡杆转轴、挡把中心(模型坐标,空挡竖直时) |
exitF exitR | 下车落脚点 |
hood hoodUp | 引擎盖关着、打开时能点到的范围 |
door doorSwung | 左门关着、打开时能点到的范围(右门对称) |
filler fillNeck | 加油口盖能点到的范围、加油管口位置 |
皮卡的车斗、尾门、分动箱杆(bed、tailgate、transferPivot 等)不填就是没有。
可选项(不填就从上面的盒子和点自动推算):
| 字段 | 含义 |
|---|---|
exhaust exhaustOut | 排气口位置(可以多个:{ {前, 右, 上}, ... })和尾气喷出的方向。不填:车尾右侧一个,向后喷 |
engineVisible | 发动机网格(<名字>_engine)不用开盖也看得见(中置发动机的玻璃盖、敞开的发动机舱):靠近时一直画。不填:只在引擎盖打开时画 |
wiperY wiperZ | 雨刮转轴(模型坐标的 Y、Z,大致是风挡玻璃的法线)。不填:T15 风挡的角度。风挡弧度大、绕一根轴转刮片会离开玻璃的车用 wiperPoses:{"wiper_l": [[进度, dx, dy, dz, qx, qy, qz, qw], ...], "wiper_l_blade": [...], ...},进度从 0 到 1 递增,每行是骨骼在这个进度的位移和旋转(四元数,模型坐标,绕骨骼枢轴),中间插值 |
points | 交互提示、各种声音、两个点击块的位置(VehicleLayout.Points)。一般不用填 |
油箱容量在物理参数里:b.tank = 73;(升,默认 60)。
这些数值和 Blender 里的空物体位置要对得上:例如方向盘骨骼 steering 放在 Blender 的 (wheelX, −wheelZ, wheelY)。

