UE4 RPG游戏player制作笔记——锁定目标

本文详细介绍了如何在游戏AI蓝图中实现锁定目标的逻辑,包括设置控件组件、添加输入操作映射、检测AI距离和视线、计算目标旋转值差,并通过时间轴控制摄像机平滑旋转。同时,还涉及到锁定状态的切换以及在锁定时如何避免其他AI阻挡,确保摄像机聚焦在屏幕中央的目标上。这一机制提升了游戏的沉浸感和交互体验。
摘要由CSDN通过智能技术生成

新建控件蓝图,将事先准备好的光点图表添加到图像控件内

要将锚点和光点设在画布中间防止安在AI上时跑偏

在AI蓝图中添加控件组件

打开项目设置,在输入中添加操作映射,设置tab为锁定键


锁定部分如下

执行锁定命令时要先获取所有目标

新建函数获取所有目标

 添加变量如下

 每次执行前先清空数组,防止出错

获取AI蓝图的所有Actor将数组输入到循环中

并不是所有actor都需要被锁定,所以新建函数设置AI检测距离和视线检测,同时改为纯函数

 检测AI距离如下

视线检测如下

检测对象类型是寻找AI碰撞箱,直接寻找模型会被AI碰撞箱阻挡,

并且被AI碰撞箱阻挡不易与场景阻挡区分

所有当没被阻挡是返回false,not翻转后为turn,是能看见

 当两个检测都为turn时执行后续节点

在筛选完AI后开始计算剩余AI与玩家的旋转值

旋转值差的绝对值越小越靠近屏幕中间

 将得出的数添加到变量里

目标变量内存放各目标的旋转值差,

目标旋转值变量存放各目标的旋转值差的绝对值

因为都在同一数组循环内,所以目标旋转值变量的绝对值与目标变量的目标一一对应

若目标变量内的值大于0则有目标被锁定

获取所有目标函数创建完毕

用keys获取目标变量内的数组,获取目标旋转值内最小的数的序列号

根据序列号获取目标变量数组内的最小值

利用对象的球体检测判断与屏幕最中间的AI之间是否还有其他AI阻挡,忽略自身

返回命中对象,类型转换为AI,若成功则被阻挡,失败则未被阻挡

锁定与取消锁定如下

将目标提升为变量,执行AI蓝图中的事件

 AI蓝图事件如下

  

此分支设置锁定与取消锁定后摄像机旋转

设置时间轴如下,不用tick节省资源

每0.2秒判断是否锁定

 

判定为turn则门打开执行设置摄像机旋转,判定为false则关闭门执行重置摄像机

 

 

设置摄像机旋转

 锁定时只需要旋转摄像机的z轴,其余不变

使用插值流畅改变摄像机旋转

 

设置摄像机旋转后执行设置人物旋转,如下图

 

重置摄像机,将y轴归零,用插值过渡

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值