meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 后一修订版 | 前一修订版 | ||
| scripting:world:vehicle [2023/05/09 12:46] – 创建 bibiboxs | scripting:world:vehicle [2025/08/16 04:30] (当前版本) – bibiboxs | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| < | < | ||
| - | # Vehicle [World] | + | # World/Vehicle |
| + | |||
| + | **载具`Vehicle`是世界玩法中的关键部分,使用相关API及事件可以高度自定义载具功能。** | ||
| + | |||
| ## Event | ## Event | ||
| - | ### OnCharacterEnterVehicle( character, | + | ### OnVehicleSpawn( vehicle ) |
| - | 具体内容请访问[Character文档](scripting/ | + | > 当载具**被生成、被调用`Respawn()`**时触发。 |
| - | ### OnCharacterExitVehicle( character, | + | ### OnVehicleExplode( vehicle, |
| - | 具体内容请访问[Character文档](scripting/ | + | > 当载具**爆炸、被摧毁**时触发,**有关`Reason`原因,请参考[《世界资源实例汇总——伤害触发类型》](reference/instances)**,例如通过代码`vehicle.Kill()`则`reason == 0`。 |
| + | |||
| + | |||
| + | |||
| + | ### OnVehicleEntered( vehicle, | ||
| + | |||
| + | > 当角色进入载具(或切换位置)时触发。 | ||
| + | |||
| + | |||
| + | |||
| + | ### OnVehicleExited( vehicle, character, seat ) | ||
| + | |||
| + | > 当角色离开载具时触发。 | ||
| + | |||
| + | |||
| + | |||
| + | ### OnVehicleDamage( vehicle, damage, from, type, isImmunity, localHitPos ) | ||
| + | |||
| + | > 当载具**被尝试造成任何伤害**时调用,如果造成伤害,会在`OnVehicleHealthChange()`后调用。 | ||
| + | > | ||
| + | > **有关伤害类型Type,请参考[《世界资源实例汇总——伤害触发类型》](reference/ | ||
| + | |||
| + | ```javascript | ||
| + | function OnVehicleDamage( vehicle: Vehicle, damage: int, from: Entity, type: int, isImmunity: bool, localHitPos: | ||
| + | /* | ||
| + | vehicle:载具实例 | ||
| + | damage:伤害值 | ||
| + | from:造成伤害的对象(可能null,例如碰撞) | ||
| + | type:伤害类型 | ||
| + | isImmunity:是否免疫伤害(如果为true,则表示没有造成伤害,可能被Immunity\Group拦截了) | ||
| + | localHitPos:受击位置的本地坐标 | ||
| + | */ | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### OnVehicleHealthChange( vehicle, oldHealth, newHealth ) | ||
| + | |||
| + | > 当载具**血量发生任何改变**时触发。 | ||
| 行 18: | 行 60: | ||
| ## Property | ## Property | ||
| - | ### Vehicle.Light | + | ### vehicle.ID |
| - | 设定载具的灯光级别。 | + | > 获取载具序列ID(并非载具模型ID),每个实例ID是唯一的。 |
| + | > | ||
| + | > 当之前的实例被销毁后,空闲的靠前ID将会被后续新实例重新使用(对于特殊情况,`UUID`是更合适的筛选选择)。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.ID: int | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.UUID | ||
| + | |||
| + | > 获取载具UUID,这是由一串较长的字符串组成的全局唯一**文本ID**(实例化时自动赋值,非持久化数据)。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.UUID: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Name | ||
| + | |||
| + | > 获取载具数据内名称(`Data.Name`)。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Name: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Model | ||
| + | |||
| + | > 获取载具模型ID(载具标识)。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Model: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Type | ||
| + | |||
| + | > 获取载具模型类型(如:汽车、船、飞行器等)。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Type: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Pos | ||
| + | |||
| + | > 设定载具位置坐标。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Pos = Vector(0, 0, 0); //Vector | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Forward | ||
| + | |||
| + | > 获取载具正前方向量。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Forward: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.World | ||
| + | |||
| + | > 设置载具实例世界ID(不同世界将不可视\不可交互)。 | ||
| + | > | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.World = 0; //int | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Group | ||
| + | |||
| + | > 设置载具**实例组**(这是一个Entity基类通用属性)。 | ||
| + | > | ||
| + | > 相同组的载具及角色对象等无法造成伤害(包括攻击、撞击等),默认值`0`表示特殊组(无免伤和分组机制)。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Group = 0; //int | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Angle | ||
| + | |||
| + | > 设定载具方向角度,而不是三维角度。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Angle = 0; //float | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.EulerAngle | ||
| + | |||
| + | > 设定载具三维角度。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.EulerAngle = Vector(0, 0, 0); //Vector | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Health | ||
| + | |||
| + | > 设定载具生命值。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Health = 1000; | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.DefaultHealth | ||
| + | |||
| + | > 获取载具默认生命值。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.DefaultHealth: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.BoundSize | ||
| + | |||
| + | > 获取(只读)载具尺寸大小。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.BoundSize; | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Immunity | ||
| + | |||
| + | > 设定载具的[免疫属性](reference/ | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Immunity = 0; //int | ||
| + | |||
| + | // | ||
| + | // | ||
| + | vehicle.Immunity = 2 + 4; // | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.TyreImmunity | ||
| + | |||
| + | > 设定载具的轮胎受击免疫,激活后**不会因==常规攻击==导致爆胎**(`vehicle.SetTyre(1)`),默认为`false`。 | ||
| + | > | ||
| + | > **注意:此属性不会影响`vehicle.SetTyre()`执行效果。** | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.TyreImmunity = false; //bool | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.DamageMultiplier | ||
| + | |||
| + | > 设定载具受损(被攻击)伤害倍数,默认为`1.0`。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.DamageMultiplier = 1.0; //float | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Light | ||
| + | |||
| + | > 设定载具的灯光级别。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Light = 0; //int | ||
| + | ``` | ||
| | Type | 说明 | | Type | 说明 | ||
| 行 27: | 行 254: | ||
| | 1 | 开启灯光 | | 1 | 开启灯光 | ||
| | 2 | 全部灯光(远光灯) | | | 2 | 全部灯光(远光灯) | | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.LightColor | ||
| + | |||
| + | > 设定载具的**主要灯光颜色**,此方法会修改当前载具所有灯光颜色。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.LightColor = Color(255, 255, 255); //Color | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.FlareLight | ||
| + | |||
| + | > 设定载具的特殊灯光开关(如:出租车头顶灯)。 | ||
| + | > | ||
| + | > 此选项仅在部分载具生效,具体取决于载具Json是否包含`Additions/ | ||
| + | > | ||
| + | > 此选项拥有一个**游戏规则`vehicle_autoflarelight`**,可开关载具生成时是否自动激活此属性,**默认开启**。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.FlareLight = true; //bool | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Horn | ||
| + | |||
| + | > 设定载具的喇叭开关。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Horn = false; //bool | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Alarm | ||
| + | |||
| + | > 设定载具的警报开关(如:特殊载具警报)。 | ||
| + | > | ||
| + | > 此选项仅在部分载具生效,具体取决于载具Json是否包含`Audios/ | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Alarm = false; //bool | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Engine | ||
| + | |||
| + | > 设置载具引擎启动状态,默认关闭,**当有玩家进入驾驶位后自动激活,并且不会在下车时主动取消**。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Engine = false; //bool | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Locked | ||
| + | |||
| + | > 设置载具**上锁状态**,默认关闭,**此属性目前只有逻辑作用,没有实际的功能**。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Locked = false; //bool | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Color | ||
| + | |||
| + | > 设定载具的**模型颜色**。 | ||
| + | > | ||
| + | > **此选项仅在支持的载具生效,具体取决于载具`Json`是否包含`Extend/ | ||
| + | |||
| + | [note2] | ||
| + | |||
| + | 《沙盘引擎》原生载具大多数都配置了此选项,因此可以直接通过代码修改载具颜色。 | ||
| + | |||
| + | [/note] | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Color = Color(255, 0, 0); //Color | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.PowerState | ||
| + | |||
| + | > 设置载具引擎**驱动状态**。 | ||
| + | > | ||
| + | > 此属性仅用于特殊情况下使用,不建议常规情况下【写入】使用,但可放心用于【只读】判定方向使用。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.PowerState = 0; | ||
| + | ``` | ||
| + | |||
| + | | Type | 说明 | ||
| + | | ---- | -------- | | ||
| + | | 0 | 无驱动 | ||
| + | | 1 | 前进驱动 | | ||
| + | | 2 | 后退驱动 | | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.TurnState | ||
| + | |||
| + | > 设置载具引擎**转向状态**。 | ||
| + | > | ||
| + | > 此属性仅用于特殊情况下使用,不建议常规情况下【写入】使用,但可放心用于【只读】判定方向使用。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.TurnState = 0; | ||
| + | ``` | ||
| + | |||
| + | | Type | 说明 | ||
| + | | ---- | -------- | | ||
| + | | 0 | 无转向 | ||
| + | | 1 | 向左转向 | | ||
| + | | 2 | 向右转向 | | ||
| + | |||
| + | ### vehicle.CenterOfMass | ||
| + | |||
| + | > 设置载具物理质心(平衡中心点),默认值为载具原始数据`CenterOfMass`。 | ||
| + | > | ||
| + | > 通常情况下,数值`Vector(0, | ||
| + | > | ||
| + | > **扩展:通过此属性+搭配按键绑定,可实现载具倾斜等效果。** | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.CenterOfMass = Vector(0, 0, 0); | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Driver | ||
| + | |||
| + | > 获取载具当前的**驾驶员角色**(如无则返回null)。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Driver: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Seat | ||
| + | |||
| + | > 获取载具的**最大乘员数量**。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Seat: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Seated | ||
| + | |||
| + | > 获取载具当前正在乘坐的**乘员数量**。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Seated: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Velocity | ||
| + | |||
| + | > 获取载具当前的**同步**物理速度。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Velocity: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Speed | ||
| + | |||
| + | > 获取载具的**完整物理速度**,并非引擎速度,也可根据此值进行载具速度比例换算。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.Speed: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.FixedSpeed | ||
| + | |||
| + | > 获取载具的**修正后物理速度**,与`vehicle.Speed`的区别在于,不会记录`0.2`及以下的速度(将自动变为0)。 | ||
| + | > | ||
| + | > 因为在多数情况下,速度`< | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.FixedSpeed: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.SpeedProgress | ||
| + | |||
| + | > 获取载具的**完整速度百分比**(0.0~1.0),取决于当前速度与最大速度。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.SpeedProgress: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.GhostMode | ||
| + | |||
| + | > 设置载具**幽灵穿透模式**开关(可穿透其他载具)。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.GhostMode = false; //bool | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.IsDamaged | ||
| + | |||
| + | > 获取载具是否已损毁(`vehicle.Health <= 0`)。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.IsDamaged: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.IsInWater | ||
| + | |||
| + | > 获取载具**是否在水中**。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.IsInWater: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.IsOnFire | ||
| + | |||
| + | > 获取载具是否**正在被燃烧**。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.IsOnFire: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.IsDamageFire | ||
| + | |||
| + | > 获取载具是否**正在损毁燃烧**(损耗低于最低数值,即将燃烧爆炸)。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.IsDamageFire: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.IsTurnOver | ||
| + | |||
| + | > 获取载具是否**被判定翻车**(翻转角度> | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.IsTurnOver: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.PowerTime | ||
| + | |||
| + | > 获取载具**持续动力时间(`PowerState == 1 || PowerState == -1`)**,默认或非动力时值为`0`。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.PowerTime: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.IsOnGround | ||
| + | |||
| + | > 获取载具**是否在地面上**(`vehicle.LiftOffHeight <= 0.5`)。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.IsOnGround: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.LiftOffHeight | ||
| + | |||
| + | > 获取载具**与地面的距离**。 | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.LiftOffHeight: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ## Static Function | ||
| + | |||
| + | ### Vehicle.Create() | ||
| + | |||
| + | > 生成一个新的载具实例,`Type`类型样式参考[《世界资源实例汇总》](reference/ | ||
| + | > | ||
| + | > 如果`Type`参数填写`-1`,则表示生成一个随机类型的载具。 | ||
| + | |||
| + | ```javascript | ||
| + | function Vehicle.Create( type: int, pos: Vector, angle: float = 0, color: Color = null ): Vehicle | ||
| + | ``` | ||
| + | |||
| + | ```javascript | ||
| + | // | ||
| + | Vehicle.Create(0, | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Vehicle.Find() | ||
| + | |||
| + | > 寻找一个载具实例(通过ID),不存在则返回`null`。 | ||
| + | |||
| + | ```javascript | ||
| + | function Vehicle.Find( id: int ): Vehicle | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Vehicle.FindByUUID() | ||
| + | |||
| + | > 寻找一个载具实例(通过UUID),不存在则返回`null`。 | ||
| + | |||
| + | ```javascript | ||
| + | function Vehicle.FindByUUID( uuid: string ): Vehicle | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ### Vehicle.GetCount() | ||
| + | |||
| + | > 获取当前所有存在载具数量。 | ||
| + | |||
| + | ```javascript | ||
| + | function Vehicle.GetCount(): | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Vehicle.Get() | ||
| + | |||
| + | > 获取当前存在的指定索引载具,通常搭配`GetCount()`遍历使用。 | ||
| + | |||
| + | ```javascript | ||
| + | function Vehicle.Get( index: int ): Vehicle | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Vehicle.SetSourceData() | ||
| + | |||
| + | > 设置**指定型号载具**最新数据,可用来修改同一`Model`载具的全部初始属性。 | ||
| + | |||
| + | [note3] | ||
| + | |||
| + | 尽管此方法允许修改任何存在的原生数据`KeyPath`,但并非所有改动都会生效(例如:轮胎、附件、座位等不会生效,也不建议修改,除非知道自己在做什么),此方法更适合修改`Handling`之类的载具**基础属性**。 | ||
| + | |||
| + | 注意:执行代码前**已存在**的载具对象**不会更新**,除非为其执行手动更新代码(`vehicle.ResetData()`)。 | ||
| + | |||
| + | [/note] | ||
| + | |||
| + | ```javascript | ||
| + | function Vehicle.SetSourceData( vehicle: int, keyPath: string, value: any ) | ||
| + | ``` | ||
| + | |||
| + | ```javascript | ||
| + | Vehicle.SetSourceData(10, | ||
| + | ``` | ||
| + | |||
| + | **更多关于`VehicleData`属性和节点信息,请参考[《游戏载具扩展》](extend/ | ||
| + | |||
| + | |||
| + | |||
| + | ### Vehicle.GetSourceData() | ||
| + | |||
| + | > 获取**指定型号载具**最新数据,如果目标节点不存在则返回`null`。 | ||
| + | |||
| + | ```javascript | ||
| + | function Vehicle.GetSourceData( vehicle: int, keyPath: string ): any | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Vehicle.ResetSourceData() | ||
| + | |||
| + | > 清空**指定型号载具**修改数据,恢复使用**引擎\模组**内原始数据。 | ||
| + | > | ||
| + | > 注意:此方法**不会更新**已生成的对象,除非手动运行 `vehicle.ResetData()` 。 | ||
| + | |||
| + | ```javascript | ||
| + | function Vehicle.ResetSourceData( vehicle: int ) | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Vehicle.ResetAllSourceData() | ||
| + | |||
| + | > 清空**指定型号载具**修改数据,恢复使用**引擎\模组**内原始数据。 | ||
| + | > | ||
| + | > 注意:此方法**不会更新**已生成的对象,除非手动运行 `vehicle.ResetData()` 。 | ||
| + | |||
| + | ```javascript | ||
| + | function Vehicle.ResetAllSourceData() | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### Vehicle.ResetAllData() | ||
| + | |||
| + | > 重置刷新**指定型号载具**最新数据,全部更新使用最新数据。 | ||
| + | > | ||
| + | > **注意:通过`vehicle.SetData`独立修改的载具也会被覆盖更新。** | ||
| + | |||
| + | ```javascript | ||
| + | function Vehicle.ResetAllData( vehicle: int = -1 ) | ||
| + | ``` | ||
| + | |||
| + | - `vehicle`默认为`-1`修改全部`Model`载具,否则表示仅修改指定`Model`载具 | ||
| 行 32: | 行 685: | ||
| ## Function | ## Function | ||
| - | ### Vehicle.SetOccupant() | + | ### vehicle.Remove() |
| - | 设定载具指定位置的乘员,也可理解为让某个角色进入载具。 | + | > 销毁当前载具实例。 |
| ```javascript | ```javascript | ||
| - | Vehicle.SetOccupant( seat: int, instance: Character ) | + | function vehicle.Remove() |
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Damage() | ||
| + | |||
| + | > 以标准方式攻击当前载具实例,**有关`Reason`原因,请参考[《世界资源实例汇总——伤害触发类型》](reference/ | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.Damage( damage: int, from: Entity = null, reason: int = 0, localHitPos: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.AddForce() | ||
| + | |||
| + | > 增加一个当前对象的物理作用力,默认为本地坐标系(根据参数`isLocal`)。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.AddForce( force: Vector, isLocal: bool = true ) | ||
| + | ``` | ||
| + | |||
| + | ```javascript | ||
| + | let veh = Vehicle.Create(...); | ||
| + | veh.AddForce( Vector(0, 0.5, 5) ); // | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.AddTurnForce() | ||
| + | |||
| + | > 增加一个当前对象的物理旋转力,默认为本地坐标系(根据参数`isLocal`)。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.AddTurnForce( force: Vector, isLocal: bool = true ) | ||
| + | ``` | ||
| + | |||
| + | ```javascript | ||
| + | let veh = Vehicle.Create(...); | ||
| + | veh.AddForce( Vector(0, 0.5, 0) ); // | ||
| + | veh.AddTurnForce( Vector(0, 10, 0) ); // | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.SetOccupant() | ||
| + | |||
| + | > 设定载具指定位置的乘员,也可理解为让某个角色进入载具。 | ||
| + | > | ||
| + | > 效果等同于`character.SetVehicle()`。 | ||
| + | |||
| + | ```javascript | ||
| + | Vehicle.SetOccupant( | ||
| ``` | ``` | ||
| ```javascript | ```javascript | ||
| let veh = Vehicle.Create(0, | let veh = Vehicle.Create(0, | ||
| - | let player | + | let chara = Character.Find(0); |
| - | veh.SetOccupant(0, player); // | + | veh.SetOccupant(chara, 0); // |
| - | veh.SetOccupant(0, null); // | + | veh.SetOccupant(null, 0); // |
| ``` | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.GetOccupant() | ||
| + | |||
| + | > 获取载具某个乘客位置的角色(`0`表示驾驶员),未找到则返回`null`。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.GetOccupant( seat: int ): Character | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.GetAnyOccupant() | ||
| + | |||
| + | > 获取载具任一乘客角色(包含驾驶员),默认返回第一个找到的角色。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.GetAnyOccupant( random: bool = false ): Character | ||
| + | ``` | ||
| + | |||
| + | - **`random`:**是否获取随机角色,否则获取第一个找到的角色 | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.FindOccupant() | ||
| + | |||
| + | > 获取指定角色在载具中的位置索引,未找到则返回`-1`。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.FindOccupant( character: Character ): int | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Fix() | ||
| + | |||
| + | > 修复当前载具(恢复最大血量),如果载具已经爆炸则自动调用`vehicle.Respawn()`。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.Respawn() | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Kill() | ||
| + | |||
| + | > 立即完全破坏当前载具。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.Kill() | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Fire() | ||
| + | |||
| + | > 开始燃烧当前载具。 | ||
| + | > | ||
| + | > 如果参数`time < 0`则表示持续燃烧。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.Fire( time: float ) | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.FireOver() | ||
| + | |||
| + | > 停止燃烧当前载具。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.FireOver() | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.Respawn() | ||
| + | |||
| + | > 复活\完全重置当前载具,如果载具上有其他角色将会被弹出。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.Respawn() | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.EjectAll() | ||
| + | |||
| + | > 弹出当前载具所有乘员\驾驶员(离开载具)。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.EjectAll() | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.SetTyre() | ||
| + | |||
| + | > 设置载具某个轮胎的状态(如有轮胎)。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.SetTyre( index: int, state: int ) | ||
| + | ``` | ||
| + | |||
| + | | 状态 | 说明 | ||
| + | | ---- | ------------------------------------------------ | | ||
| + | | 0 | 默认,轮胎可见 | ||
| + | | 1 | 爆胎,轮胎偏移(不受`vehicle.TyreImmunity`影响) | | ||
| + | | 2 | 轮胎消失 | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.GetTyre() | ||
| + | |||
| + | > 获取载具某个轮胎的状态(如有轮胎),如轮胎不存在则返回`-1`。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.GetTyre( index: int ) | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.ExistFlag() | ||
| + | |||
| + | > 获取载具`Flags`是否已激活指定的`Flag`。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.ExistFlag( flag: int ): bool | ||
| + | ``` | ||
| + | |||
| + | ```javascript | ||
| + | vehicle.SetData(" | ||
| + | DLog(vehicle.ExistFlag(4)); | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.SetData() | ||
| + | |||
| + | > 设置**当前载具**原生数据(独立),可用来修改载具部分属性。 | ||
| + | > | ||
| + | > 对于一些载具属性的调整,可能需要同时调整多个属性才会达到理想中的效果(例如:提升速度`Acceleration`的同时最好也提升`MaxSpeed`)。 | ||
| + | > | ||
| + | > **注意:尽管`SetData()`允许修改任何存在的原生数据`KeyPath`,但并非所有改动都会生效(例如:轮胎、附件、座位数等不会生效),此方法更适合修改`Handling`之类的载具属性。** | ||
| + | |||
| + | [note2] | ||
| + | |||
| + | 如果希望修改载具的特殊属性,可能希望执行:`vehicle.SetData(" | ||
| + | |||
| + | **关于载具特殊属性,参考[《载具特殊属性Flag》](reference/ | ||
| + | |||
| + | [/note] | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.SetData( keyPath: string, value: any ) | ||
| + | ``` | ||
| + | |||
| + | ```javascript | ||
| + | let tempVeh = Vehicle.Find(0); | ||
| + | tempVeh.SetData(" | ||
| + | ``` | ||
| + | |||
| + | **补充:更多有关`VehicleData`属性和节点信息,请参考[《游戏载具扩展》](extend/ | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.GetData() | ||
| + | |||
| + | > 获取**当前载具**原生数据(独立),如果目标节点不存在则返回`null`。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.GetData( keyPath: string ): any | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### vehicle.ResetData() | ||
| + | |||
| + | > 重置**当前载具**默认原生数据(独立),如果原生数据通过`Vehicle.SetSourceData()`更改,则使用被其更改后的原生数据,否则使用**引擎\模组**最原始数据。 | ||
| + | |||
| + | ```javascript | ||
| + | function vehicle.ResetData() | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| </ | </ | ||