Unity GameAI-(9)Hide

作者: Levi_Wan | 来源:发表于2016-12-09 12:14 被阅读40次

Hide(隐藏)

  • Hide行为旨在找到一个位置使得障碍物总是在角色自身和它想躲开的智能体之间。

  • 图中的黑点为潜在的隐藏点,圆形为障碍物,黑色三角为躲藏体


    Image.png

Hide算法思想

  • 找到合适的隐藏点
    • 确定附近障碍物对应的隐藏点
    • 计算出到每个隐藏点的距离,找出最近隐藏点
  • 使用Arriva行为移向最近处(动态避开障碍物)
  • 如果找不到合适的障碍物,则Evade目标

Step(1)

  • 对于每一个障碍物计算出隐藏点
  • 最好的做法是以躲藏体的中心为圆心画圆,找出这个范围内所有可以躲藏的地点,并移向最近的隐藏点,这里将不使用圆,将所有的隐藏点都计算出来。


    Image.png
  • DistanceFromBoundary:需要离躲避障碍物多远。可以通过(obstacle.postion-hidePoint.positon).maguie -obstacle.radius得到。

Step(2)

  • 计算出到每个隐藏点的距离,距离角色最近的点即为合适的隐藏点。

Step(3)

  • 智能体使用arrival行为移向最近处,如果找不到合适的障碍物,则Evade

代码实现

  • 首先为场景添加障碍物,红色方块为躲藏体,白色Sphere为障碍物
Paste_Image.png
  • 为两个红色的躲藏体添加Hide脚本,并添加需要使用到的字段
Paste_Image.png
  • 将障碍物放入Obstacles数组里
Paste_Image.png
  • 在拖放障碍物时可以先锁定Inspector面板
Paste_Image.png
  • 添加Hunter
Paste_Image.png
  • 到达Hide重点(获取最佳隐藏点)
    • 通过sphere上的collider获取到障碍物的半径,并针对Scale缩放问题进行优化。获取到DistAway,隐藏点到障碍物圆心的距离
    • 接着得到隐藏点的全局坐标
Paste_Image.png
  • 得到隐藏点以后开始进行判断,最佳隐藏点
    • 在getSteeringForce方法里先声明三个需要计算的Vector3
Paste_Image.png
  • 接着进行foreach遍历找出最佳隐藏点
Paste_Image.png
  • 分别对找到了何没有找到最佳隐藏点进行判断,如果找到了使用arrival进行判断减速半径问题。
Paste_Image.png
  • 最后将得到的操控力进行使用
Paste_Image.png

效果实现:

  • 起始位置


    Paste_Image.png
  • 进行Hide

Paste_Image.png

最后谢谢寒江独钓9527老师的指导。

相关文章

  • Unity GameAI-(9)Hide

    Hide(隐藏) Hide行为旨在找到一个位置使得障碍物总是在角色自身和它想躲开的智能体之间。 图中的黑点为潜在的...

  • Unity GameAI-(4)Arrival

    上一节介绍了Seek以及Flee,和Seek相对应的还有Arrival操控力行为 Arrival 和Seek的区别...

  • Unity GameAI-(3)Seek And Flee

    1.Seek(靠近)与Flee(逃离)操控行为 Seek指定一个目标位置,根据当前的运动速度,返回一个操纵AI角色...

  • Unity GameAI-(6)Obstacle Avoidan

    动态避障 Dynamic Obstacle Avoidance 我们在进行实际的AI操作时,和之前的避墙会有区别,...

  • Unity GameAI-(5)Pursuit And Evad

    Pursuit 追逐 pursuit与Seek和Arrive的区别Seek是寻找到目标并移动到目标附近围绕着目标移...

  • Unity GameAI-(6)Obstacle Avoidan

    动态避障在Unity中的实现 首先需要添加一个obstacle(障碍物的layer),这里为第九层 接着为我们需要...

  • Unity GameAI-(8)Path Following

    Path Following 路径跟随 原理:Path following 行为产生一个操控力,使交通工具沿着构建...

  • Hide And Seek (9)

    正在两人说话之时,一段绳梯落了下来。 云晨突然觉得有些伤感:“天虹成也本应踏上这段绳梯的。”“现在说什么也没有用了...

  • Unity GameAI-(2)Steering---WallA

    操控行为--------避墙 1. 操控行为基本概念 操控行为是指操纵控制角色,让它们能以模拟真实的方式在游戏世界...

  • Unity GameAI-(7)Wander(自由徘徊)

    Wander 原理: 使智能体能有随机的操控力,使它能在场景中国随机移动。方案一:简单实现方案方案二: 圆上随机 ...

网友评论

    本文标题:Unity GameAI-(9)Hide

    本文链接:https://www.haomeiwen.com/subject/ibeemttx.html