沙盘引擎 (SEngine)

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

用户工具

站点工具


scripting:extend:character_ai

📚 差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
scripting:extend:character_ai [2024/03/26 16:01] bibiboxsscripting:extend:character_ai [2024/04/05 16:11] (当前版本) bibiboxs
行 111: 行 111:
 **==特别注意:每当目标死亡\离开范围,角色将停止跟随并重置`AITarget`(除非强制模式`AIForceMode`)。==** **==特别注意:每当目标死亡\离开范围,角色将停止跟随并重置`AITarget`(除非强制模式`AIForceMode`)。==**
  
-| ID   | 状态                                  | 机制                                                         | AIDistance   +| ID   | 状态             | 机制                                                         | AIDistance                               | Group影响 
-| ---- | ------------------------------------- ------------------------------------------------------------ ------------ | +| ---- | ---------------- ------------------------------------------------------------ ---------------------------------------- | --------- | 
-| -1   | 静态                                  | 无任何移动行为,不会进行任何寻路<br />如果存在`AITarget(&Pos)`并且在**【手持物品】可攻击范围内,将在原地尝试面向目标攻击** | 距离内执行   +| -1   | 静态             | 无任何移动行为,不会进行任何寻路<br />如果存在`AITarget(&Pos)`并且在**【手持物品】可攻击范围内,将在原地尝试面向目标攻击** | 距离内执行                               | 同组忽略  
-| 0    | **和平(默认)**<br />(不限制Group) | 无其他行为,默认**正常寻路(跟随)移动**,不会主动攻击或逃脱(即使被攻击) | 距离内跟随   +| 0    | **和平(默认)** | 无其他行为,默认**正常寻路(跟随)移动**,不会主动攻击或逃脱(即使被攻击) | 距离内跟随                               | 无        
-| 1    | 逃离<br />(不限制Group)             | 默认站在原地,不会主动攻击,只有存在`AITarget(&Pos)`时会主动反向逃离<br />==(如果任何敌对`Group`实体攻击了自身,将自动切换`AITarget=Enemy`)== | 逃离至距离外 | +| 1    | 逃离             | 默认站在原地,不会主动攻击,如果存在`AITarget(&Pos)`主动反向逃离目标,否则将会反向逃离所有**非同组**的附近对象<br />==(如果任何敌对`Group`实体攻击了自身,将自动切换`AITarget=Enemy`)== | 逃离至距离外<br />*检测附近逃离目标范围* | 同组忽略  
-| 2    | 中立                                  | 默认正常寻路移动(或站在原地),如果任何敌对`Group`实体攻击了自身,将自动切换`AIState=3`且`AITarget=Enemy`**(因此开始执行“主动”行为)** | 无           +| 2    | 中立             | 默认正常寻路移动(或站在原地),如果任何敌对`Group`实体攻击了自身,将自动切换`AIState`且`AITarget=Enemy`**(因此开始执行“主动”行为)**<br />==具体被攻击后切换的逻辑,将由`AINeutral`决定反击或逃离== | 无                                       | 无        
-| 3    | 主动(敌对)                          | 如果`AITarget`不为空,将主动跟随`AITarget`并在`AIDistance`范围时攻击<br />反之,则默认正常寻路移动,即时空闲状态时,也会自动攻击任何在`AIDistance`范围内的实体<br />==(如果中途任何敌对`Group`实体攻击了自身,将自动切换`AITarget=Enemy`)== | 距离内追击   |+| 3    | 敌对             | 如果`AITarget`不为空,将主动跟随`AITarget`并在`AIDistance`范围时攻击<br />反之,则默认正常寻路移动,即时空闲状态时,也会自动攻击任何在`AIDistance`范围内的实体<br />==(如果中途任何敌对`Group`实体攻击了自身,将自动切换`AITarget=Enemy`)== | 距离内追击<br />*检测附近敌对目标范围*   | 同组忽略  |
  
-**注意:以上有关==【静态(攻击)、中立、主动】==状态下,均遵循`对方.Group != 自身.Group`前提条件,如果两者`Group`相同则会忽略(认为是友军),==将不会进行触发和主攻击==。**+**注意:以上AI状态均遵循【同组==Group影响==】机制(`self.Group != target.Group`,如果两者`Group`相同则会忽略(认为是友军),==将不会触发行为,并自清除`AITarget`==。**
  
-> 因此,如果希望实现某些NPC跟随并攻击指定`Character`,一定要将两方的`character.Group`设定为不同的值,它们才会变成“非友军”。+**因此,如果希望实现某些NPC跟随并攻击指定`Character`,一定要将两方的`character.Group`设定为不同的值,它们才会变成“非友军”。**
 > >
 > 如果确实有关于【中立】情况下Group相同也触发攻击的需求,可以在合适的地方提前更换`character.Group`,然后再默认触发AI逻辑)。 > 如果确实有关于【中立】情况下Group相同也触发攻击的需求,可以在合适的地方提前更换`character.Group`,然后再默认触发AI逻辑)。
scripting/extend/character_ai.txt · 最后更改: 2024/04/05 16:11 由 bibiboxs