zoukankan      html  css  js  c++  java
  • UE4_简易AI_基础移动

    首先,要给AI一个8方向的基础移动动画,

    之前已经做了一个了,就是我们所控制人物的八个方向的移动,直接复制用就行了

    就下面这个

    做了些调整,首先把 Ai的最大移速改成了600,然后在180处添加了八个方向的走路动画,把跑步的动画移到了360处。

    找到之前为AI设置idel的动画蓝图,

    删掉,新建一个状态机

     

    把刚刚的弄好的混合空间拖进来,

     

     双击打开,需要传入两个变量,速度和方向

     在事件蓝图里把这两个值设置一下

     然后拖出来一个nav碰撞体,在盒子里,AI是有导向的,也就是AI只能在这个大盒子里移动,在盒子外无法移动。

     在Ai的蓝图里,先把最大移动速度改到360,目前这个逻辑就是让他一直向右运动。

    把昨天写的伤害流血音效之类的整理一下,右键重叠到节点

     新建一个变量,类型为character,用来存放AI的目标character(一般就是玩家)

    然后使用find look at rotation节点,通过两个坐标值计算出方向(起点是AI,终点是target character)

    然后就是要让AI 知道,谁是target character 

    在Ai里添加一个角色感知,PawnSensing

     

     添加这个事件,on see pawn,我们把Ai第一个看到的角色设置为target character

     

     所以,综合一下,这个蓝图 的效果就是,

    AI一直面向我们player

    AI一直向右走

    结合就是AI 面向我们转圈

    (感觉自己是太阳,他俩是行星...)

     这两个AI一次死盯着我们,如果想改变一下,让他们慢慢转向我们,可以用一个类似 lerp 的节点  rinterp to

     比较一下AI自己和目标的距离,如果大于10米,就把AI的最大速度改到360(跑步状态),如果小于10米,就设为180(走路状态)

     发现切换速度的时候比较僵硬,是从180一下到了360

    所以也加一个逐渐减少的过程

     没有问题了,把后面关于改变移动速度的打包成一个节点

    另,这是当看不到目标时 随机移动的蓝图

    delay3秒是因为要让他每3秒重新选一个点移动,因为最开始的事件是event tick嘛

  • 相关阅读:
    Windows环境下 配置memcached (php)
    谈谈我是怎么学习PHP的(一)
    重编译Linux命令源代码
    php面向对象学习
    Windows文件系统漏洞
    十分钟能学会的框架,MVC+20个常用函数
    linux系统安装软件方法大全
    oracle基本操作
    MySQL的limit查询优化
    C# winform 可视化操作 Excel文件并读取数据
  • 原文地址:https://www.cnblogs.com/reluctante1/p/12918843.html
Copyright © 2011-2022 走看看