目录
1.角色移动状态的调整
2.摄像机平滑移动
3.创建敌人
4.设置AI随机移动
5.设置移动动画
1.角色移动状态的调整
2.摄像机平滑移动
创建摄像机Actor,设置摄像机的透视模式,弹簧臂关闭碰撞测试
在控制器开始事件时,让摄像机跟随玩家,SetFollowCamera
只有生成角色的时候,才设置摄像机,否则就每隔0.2秒生成一次
生成摄像机,并将摄像机添加到视图
随后每嗝0.08秒重新设置一下摄像机的位置,使用时间轴加插值的方式,让摄像机过度的稍微平滑一点。
在地图边缘时,停止摄像机位置移动在地图边缘时,创建瓦片蓝图的Actor,并在瓦片蓝图中添加边界的碰撞箱,当角色走进碰撞箱时,停止摄像机的位置(获取定时器句柄,以句柄暂停定时器)
创建暂停和启用摄像机跟随的方法
创建瓦片地图
碰撞箱重叠的时候,获取本地玩家控制器,然后调用关闭摄像机跟随,碰撞箱不重叠时,启用摄像机跟随。
3.创建敌人
创建敌人的动画序列
创建敌人的蓝图Character
设置蓝图Character中默认的sprite
设置蓝图Character的胶囊体大小
4.设置AI随机移动
首先在场景中添加寻路体积NavMeshBoundsVolume,并将所有可以寻路到的区域包裹在内,设置RecastNavMesh-Default的代理最大斜面,以及代理最大步高。
调整导航体积的大小,包裹场景
随后在构建中构建所有关卡
创建AI控制器蓝图
设置EnemyPaperCharacter的AI控制器,自动控制AI为已生成和已放置,并设置AI控制器为我们刚才创建的AI控制器蓝图
创建行为树和黑板
新建任务,并重载事件接受执行AI的事件,并创建随机移动的逻辑
5.设置移动动画
在EnemyCharacter中设置变量来判断是否移动,复制模式选为通知,
创建结构体,EnemyAnimInfo,并分别存储idle和moving两个动画序列
在EnemyCharacter中创建EnemyAnimInfo变量,编译蓝图后,在猪敌人蓝图和蜗牛敌人蓝图中赋值
当判断移动的变量发生改变时,通知函数内更改敌人播放的动画序列。
创建SetMoveState设置敌人的移动状态,在服务器上运行
在行为树的任务中,移动时调用AI的SetMoveState函数将运动状态设置为isMoving
,在移动成功或失败时,将AI的MoveState改为isNotMoving
最后设置以下AI的移动速度,让其看起来更真实.