(人工智能)之 A人工智能
1.导论
Virtoolsdev的 AI软件包为电视游戏或虚拟现实带来了更高的仿真度。AI软件包提供壹组扩展
的行为模块,这些行为模块能够管理特定角色或物体。使用 AI软件包提供的行为模块,用户能
够定义角色或物体为 AI物体(壹般称为 AIbot),这些物体能够对周围环境做出评测,且且作
出行为上的选择,创建群体行为和独立角色,使那些角色能够寻找物体、守卫巡逻区或和其他角
色格斗等等。
AI行为模块首先赋予角色视听感觉能力以便侦测他们的环境,然后使用更高级的行为模块(例
如 follow、runaway、hide等)管理角色对环境做出的反应。
于 virtools中提供四类 AI行为模块,他们是:
Initialization(初始化行为模块组):于执行 AI之前对场景进行测试、初始化 AI引擎和场景
中的 AI物体、自动生成或输入 AI引擎所需要的环境数据。
DataEdition(数据编辑行为模块组):用户编辑环境信息的行为模块。
AILogic(逻辑行为模块组):测试条件,然后于复杂的环境中开启恰当的 AIaction。
Action(动作行为模块组):这些行为模块是 AI软件包的核心部分,这些行为模块能够使 AIBots
拥有相当智能的行为(例如射击、藏匿或跟随等等)
AI行为模块和 virtools标准的行为模块于使用方法上是相同的,通过参数调整诸如秘密行动、
听觉能力和组队行为的标准。
2.流程
AI过程包括三个主要任务:定义场景、了解环境以、决策和行为。
用户首先要对场景和要使用的角色进行初始化定义,ai 软件包提供专门的行为模块能够进行该
类工作。
了解环境需要使用 GraphData。GraphData需要用户使用特定的行为模块创建,且且保存到硬盘
中。
决策和行为需要使用AI的Action类行为模块配合Logic类行为模块。Logic类行为模块为AIbots
提供决策,然后触发各种由 Action类行为模块控制的格斗、射击、藏匿或徘徊等动作。
GraphData用于通过使用动态射线选择路线或寻找能够躲避目标 AIBot的位置。所有的 AI动作
均通过消息驱动,消息被用户的脚本解释和处理且且壹般会触发壹个动作。
执行过程
于使用 AI功能之前,用户首先需要创建场景。用户需要保证所有的角色和动画的功能正常,且
且于添加任何 AI功能之前需要设置碰撞侦测和障碍物。障碍物和地板必须被声明为固定的障碍
物,且且用户需要建立碰撞系统。用户需要添加 PathObject属性到诸如门、梯子等壹类物体上。
这将影响到路径搜寻。
首先有三个初始化行为模块需要于每壹个场景中被运行:AILevelSettings行为模块需要出当下
Level脚本中、CreateAIEntity行为模块和 SetPersonalParameters行为模块需要出当下 AIbot
的脚本中。
当用户的场景准备好,需要使用 TestAgent行为模块测试场景中的位移和碰撞
然后使用 creategraphdata行为模块,为 AIbot勘测地形。GraphData能够描述环境信息,主要
的作用就是简化环境信息,使用 graphdata能够加快角色于环境中寻找路径的能力。graphdata
信息会于硬盘上面保存 bin文件,且且能够被 editgraph行为模块查见、编辑。graphdata信息
能够被 importdata行为模块导入且于场景中保存为壹个数据阵列。注意,用户能够为不同的
AIbots生成不同的 graphdata,不同角色的 graphdata会相同的环境进行不同的描述。例如个子
较高的角色可能不能到个子教矮的角色能够到达的区域,这时候俩个角色虽然同处于同壹个环境
中,可是需要不同的 graphdata,以便定义不同的角色的活动区域。
使用 editpathway行为模块创建或辑特定路径,路径独立于 GraphData。例如创建壹个角色的巡
逻区
最后能够使用 Actions类行为模块配合 Logics类行为模块,添加 AI功能到 AIbots上面。
3使用 AI软件包
.准备工作
AI基本上是工作的最后壹个步骤。用户首先需要构建场景和脚本。然后确定所有的角色和动画
功能正常,且且于添加 AI功能之前需要确定碰撞监测和障碍物需要进行正确的设置。
于使用 AI之前,需要为场景中的特定物体添加 AI(Path)Object和 CollisionManager这俩类属
性
定义障碍物
地板和障碍物需要被定义为固定的障碍物。首先需要打开物体的 setup窗口,为物体添加
FixedObstacle属性,之后能够通过属性值修改固定障碍物的属性。
定义路径物体
路径物体是场景中用于更改所访问的区域的元素。用户能够为诸如门、梯子、电梯和传送点壹类
的物体添加对应的属性,且且做出正确的设置,这样做之后则能够作为路径被搜寻到。
定义避让区域
AI的动作类大多数行为模块能够控制物体移动,这些行为模块中的 arrayofpointstoavoid参数
能够定义某些区域于物体移动的时候应该避让,我们称之为避让区域。用户需要创建壹个数据阵
列定义避让区域,数据阵列中列出所有围成避让区域的点的 Vector。
行 为 模 块 中 的 displacementmode参 数 提 供 的 Furtivedisplacement( 隐 秘 行 动 ) 和
avoiddangerouspoints(躲避)俩种模式,会对避让区域做出反应。Furtivedisplacement(隐
秘行动)模式会使物体于避让区的时候尽可能隐藏自身;avoiddangerouspoints(躲避)模式会
使物体尽可能的远离避让点。
很多时候,删除 GraphData中的点也能够使 AIbots避让某些区域,这比创建避让点更加容易壹
些,可是这种方法生成的避让区域将是静态的,于避让区域时常需要更改的时候这种方法就无能
为力了。
有 些 行 为 模 块 中 会 有 referentialforthepointstoavoid参 数 , 当 使 用
referentialforthepointstoavoid参数的时候,描述避让区域的数据阵列中的点的 Vector值,
将不再使用世界坐标系统。
创建角色群组
AIAction类 某 些 行 为 模 块 中 会 有 DisplacementMode参 数 , 当 使 用 参 数 的
furtivedisplacementconsideringthecharacter’sviewangle选项的时候,物体会于角色的视
觉范围内隐秘行动,这个时候用户需要设置 Groupsofcharacterstoavoid参数为某个特定的由角
色组成的群组。
.初始化 AI和程序测试
.初始化 AI
用户需要使用壹些 AIInitialization类行为模块初始化 AI,且且于脚本开始的时候这些行为模
块必须被触发。AILevelSettings壹般用于整个场景的 AI初始化,而 CreateAIEntity行为模块
和 SetPersonalParameters行为模块用于单个物体的初始化。
AILevelSettings行为模块
AILevelSettings行为模块必须使用于 levelscript上,且且只需要也只允许于 AI角色被初始
化之前启动壹次。于 AILevelSettings行为模块里面有三个重要的设置:
Maxentity:场景中允许出现的最大 AI物体数量。比较大的参数值会占用更多的 cpu和内存资源
。
allowedtimeperframe(ms):AItime将 ai的计算任务分配到很多桢,以便保持桢速率。参数
值为 0代表着没有时间限制。参数值比较低的时候,计算会被分配到更多桢,aibot的响应速度
会降低。参数值比较高的时候,桢速率会降低。这个参数值常被设置为 1到 5毫秒之间,设置这
个参数需要考虑 AIbots的数量、场景的复杂程度、aibots的响应速度和桢速率需求。
valueofameter:用于变换创建模型的单位。如果模型所使用的单位是英寸,那么这个参数值应
该设置为
这个行为模块添加诸如 AI_WALK、AI_RUN等消息。他允许 AIAction类行为模块发送这些消息,
这些消息将会作用于用户的脚本中。这些消息会触发类似 UnlimitedController壹类的行为模块
控制的角色动作。
CreateAIEntity行为模块
于物体运行任何其他 AI行为模块之前,用户需要为物体运行 CreateAIEntity行为模块,这会将
物体添加到 AI引擎的物体列表。
任何需要被 AI引擎计算的物体均必须使用 createAIEntity行为模块进行定义。所有的路径物体
同样需要使用 createAIEntity行为模块进行定义。createAIEntity行为模块能够将物体定义为
三种不同类型的 AI物体。
Player:有游戏者控制的物体,虽然这些物体不被 AI引擎控制,可是这些物体会影响 AI引擎内
其他的物体。
AIbot:这壹类物体时被 AI引擎控制的自动物体
PathObject:这类物体只会对搜寻路径起作用,壹般用于定义门、电梯、传送点或梯子壹类的物
体。
注意:于 createAIEntity行为模块必须是物体脚本中第壹个被触发的行为模块,所以
createAIEntity行为模块出口处的连接必须被设置延迟,这样才能保证所有的 AIaction类型为
模块会于物体被初始化之后运行。因为很多的 AI行为模块会需要物体作为参数输入,但这些作
为参数输入的物体必须是已经被初始化的物体,所以我们说,所有的 AIaction类型为模块必须
于 createAIEntity行为模块将物体初始化之后才能够被执行。另外当壹个物体不再需要被 ai引
擎考虑的时候,能够使用 RemoveAIfromEntity行为模块将物体设置为非 ai物体,这样会减轻 ai
引擎的计算负担。
SetPersonalParameters行为模块
这个 AI初始化行为模块能够于需要的时候动态的设置角色的技能和属性:视听敏锐度、视觉角
度、组队信息、GraphData信息使用和路径搜寻精度等。(例如如果壹个 AIbot进入了壹个黑暗
的房间,那么视觉敏锐度就应该降低,且且使用新的 GraphData)。这个行为模块同样需要于物
体脚本的开始被触发。
于 SetPersonalParameters行为模块中会出现如下参数:
EntityDirection:设置物体正前方的方向
TeamID:组队的编号
Hearingacuteness:角色听觉的敏锐度。设置角色和声音的距离,当角色和声音之间的距离小于
这个参数的时候,角色就能够听到声音。
Visualacuteness:角色视觉的敏锐度。设置角色和可视物体的距离,当角色和可视物体之间的
距离小于这个参数的时候,角色就能够见到物体。
Angleofviewcone:角色的视角大小,设置角色能够见到的范围
BotMaxSpeed:bot的行动速度(单位为米/秒)
BotHeight:角色的双脚和位置之间的 y轴距离
BotWidth:角色的宽度
DistanceBetweentwoGoals:当角色于追寻壹个活动的目标,且且这个目标移动超出了参数所设
置的距离,角色将启动壹次新的路径搜寻。比较大的参数值将会降低目标搜寻的精准度,可是会
提高程序的执行速度。
MinimumDistancetothegoal:当角色和目标之间的距离小于这个参数的时候,角色会认为自己已
经到达。
MinimumDistancetoanintermediarypoint:当角色和路径的中间点的距离小于这个参数的时候,
角色会认为自己已经到达。
Slowingdistancetothegoal:当角色和目标之间的距离小于这个参数的时候,角色会于保证不丢
失目标的情况下减慢自己的速度。
Slowingdistancetoanintermediarypoint:当角色和路径中间点之间的距离小于这个参数的时
候,角色会于保证不丢失路径中间点的情况下减慢自己的速度。
Maximumheightdelta:物体和目标或路径中间点的 Y轴距离小于这个参数的时候,角色会认为自
己已经到达。
GraphName:制定用作搜寻路径的 GraphData。
LevelPrecisionofthePathFinding:选择路径搜寻模式。选择 robot-like模式,于搜寻路径的
时候将紧贴节点,这样得到的路径不适合生物使用,可是这样搜寻路径会占用较少的系统资源;
选择 human-likewithoutdynamicavoidance模式,这种模式能够制造更加适合生物使用的路径,
可 是 使 用 这 种 模 式 的 时 候 物 体 之 间 不 会 进 行 动 态 比 让 ; 选 择
human-likewithdynamicavoidanceofotherAIbots模式,使用这种模式的时候,会占用最大的系
统资源,可是得到的路径会进行动态避让,且且更适合物体的群组行动
注意:如果需要更改这些参数,这个行为模块需要被重新触发。另外,于壹些 AI行为模块中会
有 displacementmode参 数 , 当 这 个 参 数 选 择 useshortestpath的 时 候 会 自 动 设 置
SetPersonalParameter行为模块中的 levelprecisionofthePathFinding参数为 Robotlike。
AddSound行为模块
AddSound行为模块能够允许 ai引擎识别壹个声音的位置、音量和类型。
参数如下:
in:触发这个行为模块
out:当行为模块完成后触发这个行为出口
error:当行为模块运行出错的时候触发这个行为出口
Sourceofthesound:设置声源的位置
Referential:设置声源位置的参考物体
Soundtype:选择声音类型。选项分别为格斗声(Combat)、环境声(ambiant)、角色声(character
)和危险声(danger)。
Intensity:声源的音量
Duration:持续时间
Owner:设置发出声音的物体
.测试环境
TestAgent行为模块
testagent行为模块是最先用于确定场景中物体机能是否准备完善。TestAgent行为模块壹般会
被安排于 SetPersonalParameter行为模块后面执行。通过使用 testagent行为模块,用户能够
使用小键盘区控制控制 aibot。
当用户移动角色的时候,从角色位置投射的红色的射线用于测试角色和定义为固定障碍物的静态
物体之间的碰撞。绿色的线条代表于 1km之内没有任何物体会和角色发生碰撞。可是检测之前用
户需要对地面墙壁等静态障碍物进行定义。
蓝色的射线从物体表面和红色射线交叉的位置发射,表示交叉位置表面的发现方向。如果蓝色的
线条和表面不垂直,用户则需要校正表面的法线。
当所有的物体检查结束,用户则能够进行下壹个步骤:创建GraphData.
.创建 GraphData
CreateGraphData行为模块是壹个路径信息生成器,他通过 AI引擎的计算生成 graphdata以便
描述地形。于任何场景中 graphdata只需被计算壹次,因为 Graphdata会被保存成为壹个 bin文
件到用户的硬盘上。且且于使用 importdata行为模块导入到场景中之前,能够被 editgraph行
为模块查见、编辑。于场景中能够使用多个不同的 graphdata文件,于同壹场景中,大型角色和
体积较小的角色也许就会需要不同的 graphdata文件。
行为模块
所有的物体均使用 TestAgent行为模块测试完成之后,用户能够使用 CreateGraphData行为模块
替换原有的 TestAgent行为模块。于使用 CreateGraphData行为模块的时候要注意,只能够同时
计算壹个 graphdata信息。
参数:
StartPosition:起始点的位置。
Referentia:起始点的参照物体。
MinBoundingBox:graph节点放置于壹个占位框里面,这个参数相当于设置占位框的左下角的坐
标。
MaxBoundingBox:graph节点放置于壹个占位框里面,这个参数相当于设置占位框的右上角的坐
标。
Averagenodedistance:节点之间的距离。
GraphPath:graph文件保存的位置和文件名,由于会生成多个文件,所以于这里不需要键入文
件的扩展名。
用户于为相同类型的物体生成 graphdata的时候,为了加快计算速度,能够于运行的时候对这些
物体进行复制,这样复制出的物体会壹起参和到 graphdata的创建工作中。壹般而言 20-70个物
体能够比较明显的加快计算速度。
CreatingGraphData行为模块是壹次只能够生成壹组 graphdata,虽然用户需要许多不同的
graphdata文件,可是生成 graphdata的计算只允许同时进行壹个。
用户需要于 creatgraphdata行为模块的参数中,设定 graphdata文件的路径位置和文件名。
Averagenodedistance参数会确定最终的 graph密度。
GraphData(图为编辑模式下见到的图像)左边的为 Averagenodedistance参数设置为三米得到的
,而右边的则是设置 Averagenodedistance参数为五米的结果。
用户能够设置 CreatingGraphData行为模块的 AngularDensity参数,默认为 36,壹般不超过 36
不小于 3。比较小的参数值会使搜索路径的时候于点周围执行较少方向的勘测。如果场景的区域
很大且且只需要很简单的路径,那么这个参数值能够设置的比较小
于生成 GraphData的时候,SetPersonalParameters行为模块中设置的角色运动速度需要被设置
成壹个比较合适的数值。
单击 play按钮启动计算,壹旦 CreateGraphData行为模块被启动,于开始勘测地形的时候会出
现黄色和绿色的点。这个过程将持续壹段时间,依地形复杂程度的不同,时间长短会不同。
黄色的点代表终点,绿色的代表被勘测过的点。
注意:所有的 aibot必须参和生成 GraphData!如果有 aibot出现可是不参和 graphdata生成,
那么这个过程将不会停止
当创建 graphdata计算结束,于日志(log)窗口中会显示 GraphDataGenerationisfinished。
然后会见到 graph会进行自动优化,然后消失。
当那些曲线消失不见时,graph已经作为 bin文件被保存到硬盘中。
.预览和编辑 GraphData
EditGraph行为模块
为了确定 graphdata文件已经被保存或者需要对 graphdata进行修改,用户需要于脚本中添加
EditGraph行为模块,然后指定 graphdata的 bin文件的路径位置和文件名,关闭行为模块,之
后自然会读取 bin文件。
用户能够见到 graphdata被显示为节点和连接。用户能够于播放模式下添加或删除节点,也可于
停止的状态下移动或删除节点,均能够达到修改 graph的目的。于播放模式下能够使用 A键添加
节点,使用 D键删除节点,使用 L键和 F键于俩个节点之间进行连接
.导入 GraphData
行为模块
importdata行为模块会调用壹个存储 graphdata和 pathway的数据阵列。于保存场景的时候,
于数据阵列中的信息会被导入壹且保存到场景中。
数据阵列
壹个叫做 currentaidata的数据阵列会被 ai引擎自动创建。这个数据阵列会作为 ImportData行
为模块的输入参数。阵列内通常需要俩列,参数类型分别为 AIGraphData和 AIPathWayData。于
阵列中添加的每壹行均能够控制导入其它的 GraphData文件或 pathways。于倒入数据的时候,
所有需要导入的的 graphdata均必须包含的数据阵列里面。
保存 Data到场景
通过保存场景,能够将 graphdata信息导入到 cmo文件当中。
添加或者重新导入 Data
如果用户于导入之后对 graphdata进行了编辑,那么用户需要重新导入,因为 editgraph行为模
块只会对保存于硬盘上的 bin文件里面的信息进行编辑。当导入或者重新导入信息的时候,所有
的 graphdata必须包含于数据阵列中,且且需要保证所有硬盘上的的 bin文件能够使用。
当添加或者重新导入 graphdata的时候,请遵循如下步骤:
1.打开 importdata行为模块
2.设置 currentaidata参数制定的阵列
3.如果用户只是简单的变更当前的 graphdata,则不需要修改任何内容,只是保存 cmo文件就
能够。如果用户需要添加新的 graphdata或者 pathways于 CurrentAIData数据阵列中,则需要
添加新行,且且设置单元格内容。
.使用 Pathways
创建和编辑 Pathways
Pathway是使用 graphdata信息指定路径的补充。用户能够使用 editpathway行为模块创建或编
辑 pathway。
用户需要于 editpathway行为模块指定 pathway的保存路径,指定方式和 GraphData相同。
editpathway行为模块需要于运行模式下进行编辑,于编辑的时候能够使用壹些快捷键。使用 S
键能够选择节点,使用 A键能够于鼠标处添加点,删除点能够使用 D键。最后通过保存场景能够
将 pathway文件保存到硬盘上
用户能够通过为路径节点添加 waypointscript属性,来修改 aibot于路径上面的行为。首先选
中壹个节点,然后使用右键菜单打开 3DObjectSetup窗口,转到属性窗口,双击属性值(路径节
点本身已经被添加了 waypointscript属性),于打开的窗口中能够修改属性值,控制 aibot到
达这个节点之后的行为。
导入 Pathways
类似导入 GraphData,Pathways也会创建 bin文件保存到用户的硬盘上,且且允许被编辑。用户
需要使用导入 GraphData相同的方法导入 Pathways。
使用 FollowPathways行为模块
FollowaPathWay行为模块式 action类型为模块中唯壹使用 pathway的行为模块。
In:触发这个行为
Failure:如果行为运行失败则触发这个行为出口
PathWayName:路径名
Destination:输出当前角色和路径间的距离
Percentageofthepathwaycovered:输出路径的完成度
.使用 Action类和 Logics类行为模块
壹旦用户将graphdata得导入任务完成且且已经保存到场景中,ai引擎则拥有了能够指导AIbots
寻找路径的优化环境信息。
Action类行为模块见似简单。但当他结合 logic类行为模块的时候,他们能够生成很多神奇的
效果,例如秘密行动、躲避敌人或者于环境有任何异样的时候追赶可疑的角色等等。
类行为模块
Action类行为模块能够为角色提供壹些高级的行为,例如格斗、秘密跟踪或隐藏自己等等。有
壹些需要 graphdata的名字作为参数的行为模块,能够允许物体于执行不同任务的时候使用不同
的 graphdata。
action类行为模块通过发送消息指导其他行为模块完成任务。通常 action类行为模块发送下面
的七个消息到目标物体的:
AI_WALK:行走
AI_BACKWARD:后退
AI_RUN:奔跑
AI_STOP:停止移动
AI_JUMP:跳跃
AI_FIRE:对目标开火
AI_CROUCH:蹲下
这些信息会被脚本中诸如 UnlimitedController壹类的行为模块接受到,然后触发角色相应的动
作。
壹个 aciton行为模块于被激活后,可能会壹直运行,直到同壹角色的其他的 action行为模块启
动或行为模块的输入参数出错。
参数输出点会输出壹些关于 aciton的信息,例如距离、角色是否已经到达或角色正于开火等壹
些信息。这些信息能够于脚本中使用
Fight:格斗
In:触发这个行为
Failure:如果行为运行失败则触发这个行为出口
CharacterToFightagainst:选择要格斗的对象
Fightingstrategy:选择格斗策略
Isinthenearbyoftheenemy:输出格斗对象是否已经到达攻击范围之内
Iskicking:输出当前是否正于攻击
Flee:躲避
In:触发这个行为
Failure:如果行为运行失败则触发这个行为出口
Pointtoflee:指定需要躲避的点的坐标
Referential:指定需要躲避的参考物体
Stopwhenhidden:当角色将自身藏起来的时候就停止躲避
GraphName:选择 graph。
Destination:输出当前角色的目的地
Follow:跟踪
In:触发这个行为
Failure:如果行为运行失败则触发这个行为出口
Charactertofollow:选择要跟踪的角色
Finaldistancefromthefollowedcharacter:和跟踪目标之间保持的距离
Finalpositionrelatedtothefollowedcharacter:跟踪角度,180度代表于后面跟踪,90度则代
表于侧面跟踪
Displacementmode:移动模式
ArrayofPointstoavoid:选择避让区域
Referentialforpointstoavoid:选择避让区域参考物体
GroupofCharacterstoavoid:选择需要避让的角色群组
Destination:输出当前和角色的距离
Hasarrived:输出是否已经追到目标
Goto:移动到指定位置
In:触发这个行为
Arrived:当物体到达目的地的时候触发这个行为出口
Failure:如果行为运行失败则触发这个行为出口
Destination:输入目的地坐标
Displacementmode:选择移动方式
ArrayofPointstoavoid:选择避让区域
Referentialforpointstoavoid:选择避让区域参考物体
GroupofCharacterstoavoid:选择需要避让的角色群组
Hasarrived:输出物体是否已经到达目的地
Distancetogo:输出当前和目的地之间的距离
Hide:隐藏
In:触发这个行为
Hasarrived:已经到达隐藏位置的时候触发这个行为出口
Failure:如果行为运行失败则触发这个行为出口
GroupofCharacterstoHidefrom:设置要躲避的角色群组,隐藏自身,不让这个群组发现。
ChoiceoftheHiding-Place:选择隐藏位置
Farfromtheenemies:选择距离敌人较远的地方进行隐藏
Closetoinitialposition:选择离角色最近的位置进行隐藏
Displacementmode:选择移动方式
ArrayofPointstoavoid:选择避让区域
Referentialforpointstoavoid:选择避让区域参考物体
GroupofCharacterstoavoid:选择需要避让的角色群组
PositionoftheHiding-Place:输出隐藏位置的坐标值
Ishidden:输出物体是否已经被隐藏
SetAction:指定低级动作
In:触发这个行为
Turn:设置转弯的角度
AbsoluteAngle:按照设置的转弯角度进行转弯
Speed:设定速度
Jump:角色跳跃
Crouch:角色蹲下
Shoot:角色开火
Shoot:射击
In:触发这个行为
Failure:如果行为运行失败则触发这个行为出口
Charactertoshootat:射击攻击的目标
Rangeofthegun:武器射程
Angleoftheconeofthedangerousarea:危险范围,如果有相同组别的角色于危险范围内,物体会
自动到同组角色安全的位置。
Angleofpossibleinaccuracy:角色射击的容错角度
Displacementmode:选择移动方式
ArrayofPointstoavoid:选择避让区域
Referentialforpointstoavoid:选择避让区域参考物体
GroupofCharacterstoavoid:选择需要避让的角色群组
Orientationofthegun:输出武器的指向
Isshooting:输出当前是否正于射击
Wander:徘徊
In:触发这个行为
Failure:如果行为运行失败则触发这个行为出口
GraphName:徘徊所用的 graph
Destination:输出当前目标点
类行为模块
Logic类行为模块为脚本行为提供有用的环境信息。例如角色是否能够被发现、俩个角色之间的
距离等壹些信息。
ActionType:输出当前角色进行的动作
In:触发这个行为
Out:当行为结束之后触发这个行为出口
Typeofaction:输出物体当前进行的动作,包括:GoTo、Follow、Flee、Hide、Fight、Shoot、
FollowaPathWay、Wander。
Distance:判断俩个物体的距离是否于给定最小距离和最大距离之间
In:触发这个行为
True:当俩个物体之间距离于给定范围之内则触发这个行为出口
False:当俩个物体之间距离超出给定范围,则触发这个行为出口
Distantcharacter:目标角色
Minimumvalue:最小距离
Maximumvalue:最大距离
Distance:输出俩个物体的距离
EntityAudible:测试物体是否能够听到目标物体发出的声音
In:触发这个行为
True:测试物体有听觉的时候触发这个行为出口
False:测试物体没有听觉的时候触发这个行为出口
Charactertolistento:被测试的听觉目标
Soundintensity:输出听到的声音的强度
Distancetothesourceofthesound:输出距离声音的距离
Positionofthesound:输出声音的位置
EntityVisible:测试是否能够见到目标物体
In:触发这个行为
True:当角色见到目标物体的时候触发这个行为出口
False:当角色没有见到目标物体的时候触发这个行为出口
Character:目标角色,如果不进行设置,则会于见到任何角色的时候均触发行为出口
Visiblecharacter:输出见到的角色
HearsSound:测试物体是否听到了特殊类别的声音
In:触发这个行为
True:当物体听到了特殊类别的声音的时候触发这个行为出口
False:当物体没有听到了特殊类别的声音的时候触发这个行为出口
Soundtype:设置测试的声音类型
Sourceofthesound:输出发出特殊类型声音的物体
Distancetothesource:输出当前和声源的距离
Intensity:输出当前声音的强度
SeesPoint:测试物体是否见到指定的点
In:触发这个行为
True:当物体见到特定点的时候触发这个行为出口
False:当物体没有见到特定点的时候触发这个行为出口
Pointtosee:指定目标点
Referential:指定目标点参考物体