UE5学习记录part14

第17节 enemy behavior

173 making enemies move: AI Pawn Navigation

按P查看体积

So it's very important that our nav mesh bounds volume encompasses all of the area that we'd like our 因此,我们的导航网格边界体积必须包含我们希望

AI to navigate in and we can simply scale this up. AI 导航到 in,我们可以简单地扩大它。

使用targetpoint

 使用类的全部实例

命令show navigation可以在运行过程中查看导航地图

设置runtime generation为dynamic可以在游戏运行途中动态生成导航(比如如果是static,打碎一个罐子,这个罐子在nav mesh还是显示无法到达则ai不会经过那一片地区,换成dynamic则会动态检测地图上的障碍物;或者角色打开了一扇门,而敌人认为这个门还是没有打开因为导航地图没更新就会卡住)

So changing cell size to a smaller value will make our nav mesh a little bit tighter. 因此,将 cell size 更改为较小的值将使我们的导航网格更紧密一些。

Now you don't want to go too small because you want that nav mesh to give you some leeway. 现在,您不想做得太小,因为您希望导航网格为您提供一些回旋余地。

So that's cell size. 这就是细胞大小。 

cell height 帮助ai跨越具有高度变化的障碍物(但要注意 有一些没有被检测到高度的物品 例如罐子 ai会尝试跨越它们,但实际上不行是因为罐子有碰撞体积。这会导致ai被卡在某个角落)

 

 



174 enemy movement anims: getting more animations for our enemy

175 blendspaces: blending between different animations

按住shift+移动鼠标可以移动动画位置

按ctrl+绿色的x可以移动绿色icon x查看动画混合情况

We don't want it shuffling or sliding without actually orienting to movement, but that's pretty easy. 我们不希望它在没有真正适应运动的情况下随机移动或滑动,但这很容易。

We can go into Beep Enemy and Select Character movement component and search for Orient rotation to 我们可以进入 Beep Enemy 和 Select Character movement 组件,然后搜索 Orient rotation to

movement and check that. 移动并检查它。

And if we're checking that, we should also go to BP enemy self and get use controller rotation. 如果我们要检查这一点,我们还应该去 BP 敌人自身并使用控制器旋转。

Yea. 是的。

And uncheck that. 并取消选中它。

That way our enemy will not orient towards it's controller rotation, which by the way will orient to 这样,我们的敌人就不会朝向它的控制器旋转,顺便说一句,控制器旋转会朝向

the goal target when it's moving in an AI manner. 目标 目标 (当它以 AI 方式移动时)

 



176 patrol targets: adding patrol targets for the enemy

绿色圆圈即是enemy的导航所经过的点



177 selecting patrol targets: patrolling to different targets

178 patrol wait time: adding a wait time between patrol targets



179 pawn sensing component: chasing character when seen

添加pawn sensing 组件

蓝图实现

c++实现



 180 enemy states: patrolling, chasing, and attacking

181: enemy losing interests: back to patrolling

182 attack radius : entering attack state

183 agro when hit: let's anger the enemy

184 weapon alterations: getting more weapons

导出武器的static mesh

 blender中修改武器的原点位置,让角色只使用一个socket位置就能够适配多种武器

在blender编辑模式下,r+坐标轴+度数旋转,g+坐标轴移动物体修改原点位置,s放大缩小,修改完成之后导出为fbx文件

 导入武器时,不要勾选导入material,而是关联已经存在的material

copy原本武器的材料再paste

还需要修改武器碰撞,weaponbox等位置,设置itemmesh和整体的collision为nocollision

 

### UE5 蓝图学习教程与笔记 #### 一、蓝图基础概念 UE5中的蓝图是一种可视化脚本系统,允许开发者通过图形界面创建游戏逻辑而无需编写传统代码。这使得开发过程更加直观和高效[^1]。 #### 二、事件分发器的应用 事件分发器类似于C#编程语言里的事件与委托机制,在UE5中用于实现对象间的消息传递功能。当某个特定条件满足时触发相应的动作序列执行。例如定义一个名为`EventDispatcherExample`的自定义事件分发器,并关联多个响应函数如`Func1`, `Func2`等来处理不同类型的输入或状态变化[^2]。 ```csharp // 定义事件分发器及其绑定方法(伪代码) public delegate void EventDelegate(); private EventDelegate eventDispatcher; void BindFunctions() { eventDispatcher += Func1; eventDispatcher += Func2; } void TriggerEvents() { if (eventDispatcher != null) eventDispatcher.Invoke(); } ``` #### 三、常用节点解析 以下是几个常见的蓝图节点解释: - **Space Bar**:检测空格键是否被按下。 - **Spawn Actor BP Bullet**:实例化并生成指定的子弹Actor,其作用相当于Unity引擎内的预制体(Prefab)。 - **Add Impulse**:给定物体施加瞬时力使其移动。 - **Get Player Pawn**:检索当前场景下的默认玩家角色。 - **Get Actor Location** 和 **Get Control Rotation**: 获取目标Actor的位置坐标以及控制视角的方向角度。 - **Get Actor Forward Vector**:计算出面向前方的标准单位向量。 - **Multiply**:执行两个数值相乘运算[^3]。 这些基本组件构成了大多数交互行为的基础框架,熟悉它们有助于更好地理解和应用更复杂的蓝图结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值