沙盘引擎 (SEngine)

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

用户工具

站点工具


scripting:world:character

📚 差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
scripting:world:character [2023/12/03 05:28] bibiboxsscripting: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 != null`返回**角色控制玩家(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: Vector
 ``` ```
  
行 388: 行 400:
 ```javascript ```javascript
 character.DamageMultiplier = 1.0; //float character.DamageMultiplier = 1.0; //float
 +```
 +
 +
 +
 +### character.BodyHeight
 +
 +> 获取角色身体高度,不同的角色可能有不同的高度,通常为头顶上方的高度(例如:人类默认`2.0`)。
 +
 +> 可能用于获取头顶`Bubble`显示的高度。
 +
 +```javascript
 +character.BodyHeight: float
 ``` ```
  
行 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+(乘客位置)。**
  
 ```javascript ```javascript
 character.VehicleSlot: int character.VehicleSlot: int
 +```
 +
 +
 +
 +### character.Gravity
 +
 +> 设置角色自身**额外物理重力**,默认值`0.0`。
 +>
 +> 此属性越高角色物理越向上,例如设置为`0.1`获得持续向上推力。
 +
 +```javascript
 +character.Gravity = 0.0;
 ``` ```
  
行 585: 行 632:
 ```javascript ```javascript
 character.IsInWater: bool character.IsInWater: bool
 +```
 +
 +
 +
 +### character.IsOnFire
 +
 +> 获取角色是否正在被燃烧。
 +
 +```javascript
 +character.IsOnFire: bool
 ``` ```
  
行 671: 行 728:
 | 4    | 无视爆炸伤害           | | 4    | 无视爆炸伤害           |
 | 8    | 无视碰撞(及掉落)伤害 | | 8    | 无视碰撞(及掉落)伤害 |
 +| 16    | 无视火焰伤害 |
  
  
行 694: 行 751:
 ```javascript ```javascript
 character.HasFocus = false; //bool character.HasFocus = false; //bool
 +```
 +
 +
 +
 +### character.CanSwim
 +
 +> 设置角色是否可以游泳,默认为`true`,当前版本只有僵尸等少数角色默认`false`。
 +>
 +> **注意:此属性将控制角色是否会被淹死,以及可能的AI控制逻辑。**
 +
 +```javascript
 +character.CanSwim = true;
 ``` ```
  
行 824: 行 893:
  
 > 生成一个新的角色实例,`Type`类型样式参考[《世界资源实例汇总》](reference/instances)。 > 生成一个新的角色实例,`Type`类型样式参考[《世界资源实例汇总》](reference/instances)。
-+>
 > 如果`Type`参数填写`-1`,则表示生成一个随机类型的角色(随机生物)。 > 如果`Type`参数填写`-1`,则表示生成一个随机类型的角色(随机生物)。
  
行 893: 行 962:
  
 > 以标准方式攻击当前角色实例,**有关`Reason`原因,请参考[《世界资源实例汇总——伤害触发类型》](reference/instances)**。 > 以标准方式攻击当前角色实例,**有关`Reason`原因,请参考[《世界资源实例汇总——伤害触发类型》](reference/instances)**。
 +
 +> **注意:此方法受到`GameRule("character_damagemultiplier")`规则影响(默认值`0.5`,因此`character.Damage(50)`则只会受到25伤害),如果希望直接改变血量,请考虑使用`character.Health`属性直接赋值。**
  
 ```javascript ```javascript
行 929: 行 1000:
 ### character.AIMove() ### character.AIMove()
 > **==此方法已被取消,请使用`AITarget`属性等方式AI寻路。==** > **==此方法已被取消,请使用`AITarget`属性等方式AI寻路。==**
-+>
 > 让角色AI寻路到某个坐标,如果角色不在任何Stream范围内,或者无法到达指定位置,将会返回`false`。 > 让角色AI寻路到某个坐标,如果角色不在任何Stream范围内,或者无法到达指定位置,将会返回`false`。
 > >
行 965: 行 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()
 ``` ```
  
行 1131: 行 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
 +```
  
  
行 1163: 行 1280:
 | 节点位置(Node) | 说明                       | | 节点位置(Node) | 说明                       |
 | ---------------- | -------------------------- | | ---------------- | -------------------------- |
-| 0                | 头部                       | +| 0                | 头部(支持动物角色)                       | 
-| 1                | 身体                       |+| 1                | 身体(支持动物角色)                      |
 | 2                | 手持物品(关键)、右手位置 | | 2                | 手持物品(关键)、右手位置 |
 | 4                | 左手位置                   | | 4                | 左手位置                   |
行 1196: 行 1313:
  
 - **node:**角色节点位置(索引) - **node:**角色节点位置(索引)
 +
 +
 +### character.GetNodeExtendPos()
 +
 +> 获取角色指定节点位置的当前世界坐标,如果不存在节点则返回`Vector(0, 0, 0)`。
 +
 +```javascript
 +function character.GetNodeExtendPos( node: int ): Vector
 +```
 +
 +- **node:**角色节点位置(索引)
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  
scripting/world/character.1701552502.txt.gz · 最后更改: 2023/12/03 05:28 由 bibiboxs