沙盘引擎 (SEngine)

创意诞生沙盘世界,不止如此想象!

用户工具

站点工具


extend:vehicle

这是本文档旧的修订版!




📚 游戏载具扩展

在《沙盘引擎》扩展中,载具扩展是多数玩法不可缺少的存在。 引擎默认内置了许多常见的载具类型,并且全部基于Json配置文件存在,如果开发者需要增加外部载具或新增载具,则需要了解载具扩展说明。

📒 载具框架

在世界中,每个【载具】都被认定为可驾驶、拥有操控性等实体,包括但不限于二轮车、多轮车、船舶、飞机、直升飞机这些基础类型,其他类型载具也应遵循以上类型进行扩展(如UFO可以用直升飞机的逻辑\配置文件来制作,只不过看起来模型是UFO)。

言简意赅,载具实际上就是静态模型+绑定功能性载具脚本+其他扩展组成的。

📒 载具配置

每个载具的配置文件都是独立的,一个配置文件代表一个载具,同时配置文件命名将直接关乎于绑定给哪个载具

例如:10000_Car.json表示给ID为10000的载具指定配置。 配置文件目录:模组目录\Store\Data\Vehicle

📘 配置Json解析

以下内容为引擎默认载具【警车ID10】的配置示例,如你所见,警车模型+Json文件组成了这台可驾驶、外表为警车、可使用警报、性能声音等配置如下的世界载具。

基于Json的配置特性,以下部分内容如不需要可进行删除省略,同时每行配置信息均代表此载具的某个配置(如Handling.Acceleration代表加速度)。

{
	"Name": "Police", //载具名称
	"Model": 410, //载具模型
	"Type": 1, //载具类型
	"Scale": 0.8, //整体缩放
	"Collision": {"x": 2.6, "y": 2.0, "z": 6.0}, //碰撞盒尺寸
	"CollisionCenter": {"x": 0.0, "y": 0.0, "z": 0.0}, //碰撞盒偏移
	"Handling": {
		"Mass": 1500.0, //重量
		"CenterOfMass": {"x": 0.0, "y": -0.3, "z": 0.0}, //重心
		"MaxSpeed": 180.0, //最大速度
		"MaxHealth": 1000, //最大(默认)血量
		"DamageMultiple": 1.0, //伤害叠加
		"Immunnity": 0, //默认免疫Flag
		"Acceleration": 100.0, //加速度
		"Deceleration": 100.0, //减速度
		"Sensitivity": 3.0, //灵活度
		"SteeringLock": 35.0 //转向最大角度
	},
	"Extend": {
		"ColorNodes": [] //颜色节点(如需要单独修改指定子模型的颜色)
	},
	"Audios": {
		"Collision": 150, //碰撞声音
		"Engine": 255, //引擎声音(持续)
		"Wake": 203, //启动声音
		"Brake": 430, //刹车声音
		"Horn": 350, //喇叭声音
		"HornPitch": 1.0, //喇叭声调
		"Door": 420, //进出声音
		"Alarm": 400 //特殊功能声音(如警笛)
	},
	"Seats": [ //乘客配置数组(Vector)
		{"Pos": {"x": -0.55, "y": -0.1, "z": 0.4}},
		{"Pos": {"x": 0.55, "y": -0.1, "z": 0.4}},
		{"Pos": {"x": -0.55, "y": -0.1, "z": -0.6}},
		{"Pos": {"x": 0.55, "y": -0.1, "z": -0.6}}
	],
	"Wheels": [ //轮胎配置数组
		{
			"Model": 550,
			"Steering": true,
			"Pos": {"x": -1.2, "y": 0.0, "z": 2.2},
			"Angle": {"x": 0.0, "y": 0.0, "z": 0.0},
			"Scale": 1.0
		},
		{
			"Model": 550,
			"Steering": true,
			"Pos": {"x": 1.2, "y": 0.0, "z": 2.2},
			"Angle": {"x": 0.0, "y": 180.0, "z": 0.0},
			"Scale": 1.0
		},
		{
			"Model": 550,
			"Steering": false,
			"Pos": {"x": -1.2, "y": 0.0, "z": -2.3},
			"Angle": {"x": 0.0, "y": 0.0, "z": 0.0},
			"Scale": 1.0
		},
		{
			"Model": 550,
			"Steering": false,
			"Pos": {"x": 1.2, "y": 0.0, "z": -2.3},
			"Angle": {"x": 0.0, "y": 180.0, "z": 0.0},
			"Scale": 1.0
		}
	],
	"Additions": [ //附加属性,参考本文下方说明
		{
			"Type": 1,
			"Pos": {"x": 0, "y": 1.0, "z": 3},
			"Angle": {"x": 12.0, "y": 0.0, "z": 0.0},
			"Color": {"r": 255, "g": 255, "b": 255},
			"Switch": true,
			"Range": 100,
			"Intensity": 1.0
		},
		{
			"Type": 0,
			"Pos": {"x": 0, "y": 1.0, "z": -3.3},
			"Color": {"r": 255, "g": 0, "b": 0},
			"Range": 8,
			"Intensity": 1.0
		},
		{
			"Type": 2,
			"Enum": 7,
			"Pos": {"x": 0, "y": 0.8, "z": 2.4},
			"Color": {"r": 150, "g": 150, "b": 150},
			"Intensity": 2.0,
			"Range": 0.7,
			"Scale": 2
		},
		{
			"Type": 3,
			"Enum": 7,
			"Pos": {"x": 0.4, "y": 0.5, "z": -3},
			"Color": {"r": 180, "g": 180, "b": 180},
			"Intensity": 3.0,
			"Range": 0.5,
			"Scale": 1.5
		},
		{
			"Type": 5,
			"Enum": 1,
			"Pos": {"x": 0, "y": 1.0, "z": -3},
			"Color": {"r": 255, "g": 0, "b": 0},
			"Range": 3,
			"Intensity": 1.0
		},
		{
			"Type": 4,
			"Enum": 2,
			"Pos": {"x": 0.8, "y": 2.3, "z": -0.2},
			"Color": {"r": 255, "g": 0, "b": 0},
			"Range": 18,
			"Intensity": 1.0
		},
		{
			"Type": 4,
			"Enum": 1,
			"Pos": {"x": -0.8, "y": 2.3, "z": -0.2},
			"Color": {"r": 0, "g": 192, "b": 255},
			"Range": 18
		}
	]
}

📘 附加组件解释

注意:由于扩展类型指向意义广泛,但公开属性是有限的,所以不同类型的扩展可能有不同的属性含义,具体效果可参考其他Json配置或顾名思义、通过经验尝试看看。

AdditionType 说明
0 Light(点光源,Light == true时生效)
1 SpotLight(射灯,Light == true时生效)
2 HealthParticle(血量粒子,根据损耗动态显示)
3 EngineParticle(引擎粒子,排气,Engine == true后生效)
4 Alarm(闪烁警报,灯光,Alarm == true时生效)
5 PowerLensFlare(光晕,刹车灯、后退及刹车时生效)
6 LensFlare(光晕,一直生效)
7 Collider(碰撞盒,用于补充细节碰撞(例如:推土机前面的推铲))

extend/vehicle.1694185813.txt.gz · 最后更改: 2023/09/08 23:10 由 bibiboxs