碰撞命中组件(UCC) {{ currentPage ? currentPage.title : "" }}

碰撞命中组件:UltimateCollisionComponent

用途:用于武器、玩家、发射体命中碰撞检测

  • 命中检测类型(ECollistionType):例如:左手、右手、右脚、右手武器、尾巴等,随后在OnSetupCollistionSocket通知中设置具体组件与插槽

  • 命中请在动画蒙太奇中添加动画通知状态ANS_HitBox来开启命中碰撞检测

变量

说明

CollisionHandles(未公开)

开启的所有碰撞句柄

CollisionSavedData(未公开)

碰撞保存数据,调用OpenHitCollision开启碰撞时,会先保存一份数据,随后调用OnSetupCollistionSocket设置插槽时会使用该数据

bCollisionTrace(未公开)

是否开启碰撞检查,当碰撞句柄列表为空时关闭

bAllowTrace(未公开)

是否允许检查,初始开启的第一帧由于只有一个坐标无法进行检查,用于等待到第二帧开始检查

SocketLocationMaps(未公开)

储存的插槽坐标,当bCollisionTrace为true时检查完毕后更新

HitDatas(未公开)

命中数据,用于单个句柄的Actor命中储存,避免多次命中

GroupHitDatas(未公开)

分组命中数据,用于分组的Actor命中储存,避免多次命中

CollistionSockets

碰撞插槽,调用AddCollistionSocket进行添加

CollisionQueryTypes(设置)

检查碰撞类型

IgnoredCollisionProfileNames(设置)

无视的碰撞描述名

IgnoredClasses(设置)

无视的Class

TraceRadius(设置)

检查的半径

bEnableTraceDebug(设置)

显示debug

函数

说明

CreateHandle(未公开)

创建碰撞句柄

CloseHandle(int32 Handle)(未公开)

关闭碰撞句柄,将会移除对应的插槽与命中数据

GetHandleCounter(未公开)

获取碰撞句柄数量

RemoveCollistionSocket(int32 Handle)(未公开)

移除碰撞插槽

AddCollistionSocket(UPrimitiveComponent* Component,const TArray<FName>& SocketNames)

添加碰撞插槽,在事件分发器OnSetupCollistionSocket中调用

OpenHitCollision(ECollistionType CollistionType, FName DamageGroup,float DamageMultiplication, bool bHitFreezeFrame)

开启命中碰撞检测,一般由动画通知状态 UANS_HitBox开启时调用

CloseHitCollision(int32 Handle,FName DamageGroup)

关闭命中碰撞检测一般由动画通知状态 UANS_HitBox结束时调用

CloseAllHitCollision

关闭所有碰撞句柄,死亡时调用,在APrimalCharacter::OnDeath已调用

GetIsIgnoreClass(UClass* ActorClass)

是否为无视的Class

GetUniqueSocketName(UPrimitiveComponent* Component, FName SocketName)

获取唯一插槽名,用于识别储存的插槽坐标

GetHitActors(int32 Handle, FName DamageGroup)

获取已命中的实体列表

CreateGroupHitData(FName DamageGroup)(未公开)

创建分组命中数据

RemoveGroupHitData(FName DamageGroup)(未公开)

移除分组命中数据

AddHitData(int32 Handle, FName DamageGroup, AActor* HitActor)(未公开)

添加命中数据,由TraceHit命中后调用

RemoveHitData(int32 Handle,FName DamageGroup)(未公开)

移除命中数据

TraceHit(未公开)

碰撞命中检查

UpdateSocket(FCollistionSocket CollistionSocket)

更新单个插槽位置

UpdateAllSocket

更新所有插槽位置

事件分发器

说明

OnHit(FHitResult HitResult,float DamageMultiplication, bool FreezeFrame)

命中事件,在此实现伤害、效果等

OnSetupCollistionSocket(int32 Handle, ECollistionType CollistionType,bool bHitFreezeFrame)

设置碰撞插槽事件,开启命中碰撞检测时调用,在此调用AddCollistionSocket来设置碰撞插槽

  • ANS_HitBox:开启命中碰撞检测

变量

说明

CollistionHandle(未公开 )

碰撞句柄

CollistionType

碰撞类型,随后在OnSetupCollistionSocket中调用AddCollistionSocket来设置碰撞插槽

bHitFreezeFrame

是否开启卡帧,命中后进行卡帧,卡帧效果需自行在OnHit中实现

DamageGroup

伤害分组,用于几个命中碰撞检测通知使用同一个命中数据,避免对玩家造成多段伤害,其中设置了引用计数

命中碰撞检测通知不连续,则需添加一个DamageMultiplication为0的用于引用的命中碰撞通知(不会进行检查,但会让命中数据继续存在),当引用为0时将会移除对应的分组命中数据

DamageMultiplication

伤害倍率,同于调节同一个蒙太奇多个伤害分段,例如初始出刀速度慢,仅造成0.7倍伤害

{{{ content }}}