武器的射线检测——socket

该博客介绍了在Unreal Engine 4(UE4)中如何实现角色与武器的交互,包括给武器添加socket插槽,使敌人具备可攻击接口,创建HitHandlerComponent进行攻击判定,以及在动画中通过动画通知开启和关闭射线检测。详细步骤包括组件的创建、变量定义、函数实现,以及蓝图节点的使用,确保了游戏中的近战攻击判定准确无误。
摘要由CSDN通过智能技术生成

给武器添加 socket 插槽

打开武器的蓝图,并创建插槽,移动位置

在这里插入图片描述

将武器绑定到角色上,见 文章 武器和插槽

给敌人添加一个能被攻击的interface

创建蓝图接口,并添加 GetHit函数

Interface

打开受到攻击的角色蓝图,并打开 类设置,添加 刚刚创建 的接口

引入Interface

实现 GetHit 函数

GetHit

这里 播放了一个蒙太奇动画,角色的受击动画

制作HitHandlerComponent(攻击判定组件)

创建Actor组件
在这里插入图片描述

变量

变量

场景组件 Weapon : 场景中的组件

数组(命名) SocketName : 保存存放的 发射点socket 的名称

Bool TranceOpen :判断是否开启检测

Map(命名:向量) PreSocketLocation :保存 发射点socket 的位置

数组(Actor) DamagedActor :额外需要排除在碰撞对象之外的对象数组

函数

InitWeaponSocket : 获取场景中需要发出射线的组件,并初始化 SocketName 的内容,保存 发射点socket 的名称

Trance : 创建射线检测

EnableTrace :开启检测,初始化所有数据

DisableTrace :关闭检测

UpdateTrance : 更新socket的位置

蓝图节点

Get Socket Location

获取场景空间插槽或骨骼的位置

Get Socket Location

MutiLineTranceByChannel

沿给定的线执行碰撞检测,并返回遭遇的所有命中,包含首个阻挡命中。

此检测将找到响应给定TraceChannel的对象

MutiLineTranceByChannel

start :开始位置

end :结束位置

Trace Channel:可见性,选择通道

Trace Complex: 每个碰撞体都有两个版本的包围盒,此处选择碰撞包围盒类型是Simple还是Complex

Actors to Ignore:额外需要排除在碰撞对象之外的对象数组

draw Debug Type : 调试bug,会出现线来辅助,默认为无,若选择可以修改选项

Ignore Self: 是否排除和自身的碰撞(默认为true)

  • Trace Color:射线的颜色
  • trace Hit Color:碰撞的物体后射线的颜色
  • Draw Time :绘制的时间
  • Out Hit:返回碰撞的物体的信息

返回值 :

  • Return Value: 布尔类型,是否发生了碰撞。
  • Out Hit: 结构体类型的碰撞结果,展开以后如下:

在这里插入图片描述

Out Hit Distance射线起点到碰撞点的距离;

Out Hit Location碰撞点的世界坐标;

Out Hit Normal 碰撞点的法线。

Does Implement Interface

是否引入特定的 蓝图接口

Does Implement Interface

Get Owner

跟随外部链获取"拥有"此组件的AActor,获得此Actor的所有者,

在这里插入图片描述

具体内容

实时监测

获取所有的socket的名字

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在动画中开启和关闭射线

动画通知(Animation Nofity)

创建动画通知状态(AnimNotifyState)

在这里插入图片描述

使用 动画通知状态

创建攻击蒙太奇

  1. 添加通知轨道

在这里插入图片描述

  1. 添加通知状态
    通知状态

其中 Hit 为创建的动画通知状态

重载 动画通知状态 内的函数

打开之前创建的 AnimNotifyState

重载函数 Received_NotifyBeginReceived_NotifyEnd,即 开始接收通知 和 结束接收通知

在这里插入图片描述

其中:HitWeapon 为创建的 攻击判断组件

使用攻击判断组件

在角色蓝图中添加攻击判断组件

在这里插入图片描述

参考资料

【UE4】游戏中近战攻击判定检测(一)——射线检测!

玩转UE4动画系统>基础篇 之 什么是射线检测

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值