文章目录
给武器添加 socket 插槽
打开武器的蓝图,并创建插槽,移动位置
将武器绑定到角色上,见 文章 武器和插槽
给敌人添加一个能被攻击的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
获取场景空间插槽或骨骼的位置
MutiLineTranceByChannel
沿给定的线执行碰撞检测,并返回遭遇的所有命中,包含首个阻挡命中。
此检测将找到响应给定TraceChannel的对象
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
是否引入特定的 蓝图接口
Get Owner
跟随外部链获取"拥有"此组件的AActor,获得此Actor的所有者,
具体内容
在动画中开启和关闭射线
动画通知(Animation Nofity)
创建动画通知状态(AnimNotifyState)
使用 动画通知状态
创建攻击蒙太奇
- 添加通知轨道
- 添加通知状态
其中 Hit 为创建的动画通知状态
重载 动画通知状态 内的函数
打开之前创建的 AnimNotifyState
重载函数 Received_NotifyBegin 和 Received_NotifyEnd,即 开始接收通知 和 结束接收通知
其中:HitWeapon 为创建的 攻击判断组件
使用攻击判断组件
在角色蓝图中添加攻击判断组件