这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
scripting:world:character [2023/12/11 21:08] – bibiboxs | scripting:world:character [2024/04/05 12:26] (当前版本) – bibiboxs | ||
---|---|---|---|
行 102: | 行 102: | ||
- | ### OnCharacterPropAction( character, prop ) | + | ### OnCharacterPropAction( character, prop, hitPos |
> 当角色手中道具**每次被使用一次**时调用(例如:每次挥拳、开枪等)。 | > 当角色手中道具**每次被使用一次**时调用(例如:每次挥拳、开枪等)。 | ||
+ | > | ||
+ | > **注意:`hitPos`参数表示当前物品最终造成伤害的位置,但投掷类物品等无法确定最终位置,所以此处将只返回起点位置。** | ||
```javascript | ```javascript | ||
- | function OnCharacterPropAction( character: Character, prop: Prop ) | + | function OnCharacterPropAction( character: Character, prop: Prop, hitPos: Vector |
``` | ``` | ||
行 234: | 行 236: | ||
> 设置或获取角色名称(默认为空字符),长度限制最多`16`。 | > 设置或获取角色名称(默认为空字符),长度限制最多`16`。 | ||
> | > | ||
- | > 如果获取角色名称为空,但其`Owner | + | > 即使有玩家(`Owner`)正在控制当前角色,也并不会返回玩家名称。 |
```javascript | ```javascript | ||
行 248: | 行 250: | ||
```javascript | ```javascript | ||
character.Pos = Vector(0, 0, 0); | character.Pos = Vector(0, 0, 0); | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### character.Forward | ||
+ | |||
+ | > 获取角色正前方向量。 | ||
+ | |||
+ | ```javascript | ||
+ | character.Forward: | ||
``` | ``` | ||
行 388: | 行 400: | ||
```javascript | ```javascript | ||
character.DamageMultiplier = 1.0; //float | character.DamageMultiplier = 1.0; //float | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### character.BodyHeight | ||
+ | |||
+ | > 获取角色身体高度,不同的角色可能有不同的高度,通常为头顶上方的高度(例如:人类默认`2.0`)。 | ||
+ | > | ||
+ | > 可能用于获取头顶`Bubble`显示的高度。 | ||
+ | |||
+ | ```javascript | ||
+ | character.BodyHeight: | ||
``` | ``` | ||
行 410: | 行 434: | ||
```javascript | ```javascript | ||
character.TriggerDistance = 1.55; //float | character.TriggerDistance = 1.55; //float | ||
+ | ``` | ||
+ | |||
+ | |||
+ | ### character.AISurface | ||
+ | |||
+ | > 为当前角色开关独立寻路范围组件,开启后可解决`Player+Stream`范围限制的问题,并且以当前对象自身作为寻路范围中心点,此属性默认关闭。 | ||
+ | > | ||
+ | > **注意:玩家控制的角色不需要且无法开启,因为`Player`本身就存在寻路范围组件。==此属性每开启一个会对服务器主机性能产生一些影响,因此仍然建议AI寻路尽可能符合Stream规范,在特别需求的情况下,可以开启少数对象的此属性。==** | ||
+ | |||
+ | ```javascript | ||
+ | character.AISurface = false; | ||
``` | ``` | ||
行 463: | 行 498: | ||
```javascript | ```javascript | ||
- | character.AIDistance = 10.0; //float | + | character.AIDistance = 3.0; //float |
``` | ``` | ||
行 485: | 行 520: | ||
> 获取当前玩家所在载具乘客位置(如果不存在乘坐载具,则返回-1)。 | > 获取当前玩家所在载具乘客位置(如果不存在乘坐载具,则返回-1)。 | ||
- | > | + | > |
> **顺序:0(驾驶位)、1+(乘客位置)。** | > **顺序:0(驾驶位)、1+(乘客位置)。** | ||
行 496: | 行 531: | ||
### character.Gravity | ### character.Gravity | ||
- | > 设置角色自身物理重力,默认值`-12`。 | + | > 设置角色自身**额外物理重力**,默认值`0.0`。 |
> | > | ||
- | > 此属性越高角色物理越向上,例如设置为`0`类似月球效果。 | + | > 此属性越高角色物理越向上,例如设置为`0.1`获得持续向上推力。 |
```javascript | ```javascript | ||
- | character.Gravity = -12; | + | character.Gravity = 0.0; |
``` | ``` | ||
行 597: | 行 632: | ||
```javascript | ```javascript | ||
character.IsInWater: | character.IsInWater: | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### character.IsOnFire | ||
+ | |||
+ | > 获取角色是否正在被燃烧。 | ||
+ | |||
+ | ```javascript | ||
+ | character.IsOnFire: | ||
``` | ``` | ||
行 683: | 行 728: | ||
| 4 | 无视爆炸伤害 | | 4 | 无视爆炸伤害 | ||
| 8 | 无视碰撞(及掉落)伤害 | | | 8 | 无视碰撞(及掉落)伤害 | | ||
+ | | 16 | 无视火焰伤害 | | ||
行 706: | 行 751: | ||
```javascript | ```javascript | ||
character.HasFocus = false; //bool | character.HasFocus = false; //bool | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### character.CanSwim | ||
+ | |||
+ | > 设置角色是否可以游泳,默认为`true`,当前版本只有僵尸等少数角色默认`false`。 | ||
+ | > | ||
+ | > **注意:此属性将控制角色是否会被淹死,以及可能的AI控制逻辑。** | ||
+ | |||
+ | ```javascript | ||
+ | character.CanSwim = true; | ||
``` | ``` | ||
行 836: | 行 893: | ||
> 生成一个新的角色实例,`Type`类型样式参考[《世界资源实例汇总》](reference/ | > 生成一个新的角色实例,`Type`类型样式参考[《世界资源实例汇总》](reference/ | ||
- | > | + | > |
> 如果`Type`参数填写`-1`,则表示生成一个随机类型的角色(随机生物)。 | > 如果`Type`参数填写`-1`,则表示生成一个随机类型的角色(随机生物)。 | ||
行 905: | 行 962: | ||
> 以标准方式攻击当前角色实例,**有关`Reason`原因,请参考[《世界资源实例汇总——伤害触发类型》](reference/ | > 以标准方式攻击当前角色实例,**有关`Reason`原因,请参考[《世界资源实例汇总——伤害触发类型》](reference/ | ||
+ | > | ||
+ | > **注意:此方法受到`GameRule(" | ||
```javascript | ```javascript | ||
行 941: | 行 1000: | ||
### character.AIMove() | ### character.AIMove() | ||
> **==此方法已被取消,请使用`AITarget`属性等方式AI寻路。==** | > **==此方法已被取消,请使用`AITarget`属性等方式AI寻路。==** | ||
- | > | + | > |
> 让角色AI寻路到某个坐标,如果角色不在任何Stream范围内,或者无法到达指定位置,将会返回`false`。 | > 让角色AI寻路到某个坐标,如果角色不在任何Stream范围内,或者无法到达指定位置,将会返回`false`。 | ||
> | > | ||
行 977: | 行 1036: | ||
```javascript | ```javascript | ||
function character.Kill() | function character.Kill() | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### character.Fire() | ||
+ | |||
+ | > 开始燃烧当前角色。 | ||
+ | > | ||
+ | > 如果参数`time < 0`则表示持续燃烧。 | ||
+ | |||
+ | ```javascript | ||
+ | function character.Fire( time: float ) | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### character.FireOver() | ||
+ | |||
+ | > 停止燃烧当前角色。 | ||
+ | |||
+ | ```javascript | ||
+ | function character.FireOver() | ||
``` | ``` | ||
行 1143: | 行 1224: | ||
- **anim:**播放动作ID | - **anim:**播放动作ID | ||
- **loop:**是否循环播放(直到主动停止播放) | - **loop:**是否循环播放(直到主动停止播放) | ||
+ | |||
+ | |||
+ | |||
+ | ### character.SetExtend() | ||
+ | |||
+ | > 设置角色扩展属性(例如:人形角色的头部、头发),==**此功能更多只适用于人形角色**==。 | ||
+ | > | ||
+ | |||
+ | ```javascript | ||
+ | function character.SetExtend( type: index, index: int ) | ||
+ | ``` | ||
+ | |||
+ | - **type:**角色扩展类型(人形角色:0=头部\1=头发) | ||
+ | - **index:**角色扩展索引 | ||
+ | |||
+ | |||
+ | |||
+ | ### character.GetExtend() | ||
+ | |||
+ | > 获取角色扩展属性。 | ||
+ | |||
+ | ```javascript | ||
+ | function character.GetExtend( type: int ): int | ||
+ | ``` | ||
行 1175: | 行 1280: | ||
| 节点位置(Node) | 说明 | | 节点位置(Node) | 说明 | ||
| ---------------- | -------------------------- | | | ---------------- | -------------------------- | | ||
- | | 0 | 头部 | + | | 0 | 头部(支持动物角色) |
- | | 1 | 身体 | + | | 1 | 身体(支持动物角色) |
| 2 | 手持物品(关键)、右手位置 | | | 2 | 手持物品(关键)、右手位置 | | ||
| 4 | 左手位置 | | 4 | 左手位置 | ||
行 1208: | 行 1313: | ||
- **node:**角色节点位置(索引) | - **node:**角色节点位置(索引) | ||
+ | |||
+ | |||
+ | ### character.GetNodeExtendPos() | ||
+ | |||
+ | > 获取角色指定节点位置的当前世界坐标,如果不存在节点则返回`Vector(0, | ||
+ | |||
+ | ```javascript | ||
+ | function character.GetNodeExtendPos( node: int ): Vector | ||
+ | ``` | ||
+ | |||
+ | - **node:**角色节点位置(索引) | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||