当前位置: 首页 > java >正文

RPG22.处理武器碰撞

一般情况下,在非攻击状态武器时不会有碰撞的。则要在进行攻击的时候进行碰撞检测,所以使用动画通知进行开启与关闭碰撞检测。

1.新建一个接口

然后重写一个虚函数

public:virtual UPawnCombatComponent* GetPawnCombatComponent() const = 0;

 新建一个空文件WarriorEnumTypes用于存储枚举

#pragma onceUENUM()
enum class EXMBWarriorConfirmType : uint8
{Yes,No
};UENUM()
enum class EWarriorValidType : uint8
{Valid,Invalid};

2.然后在CharacterBase内,继承接口以及覆写函数

public:
//Begin IPawnCombatInterface Interfacevirtual UPawnCombatComponent* GetPawnCombatComponent() const override;//End IPawnCombatInterface Interface
UPawnCombatComponent* ACharacterBase::GetPawnCombatComponent() const
{return nullptr;
}

进入XMBCharacter和EnemyCharacterBase内做同样的事

//Begin IPawnCombatInterface Interfacevirtual UPawnCombatComponent* GetPawnCombatComponent() const override;//End IPawnCombatInterface Interface
UPawnCombatComponent* AXMBCharacter::GetPawnCombatComponent() const
{return XMBCombatComponent;
}
//Begin IPawnCombatInterface Interfacevirtual UPawnCombatComponent* GetPawnCombatComponent() const override;//End IPawnCombatInterface Interface
UPawnCombatComponent* AEnemyCharacterBase::GetPawnCombatComponent() const
{return EnemyCombatComponent;
}

3.进入Library内,

	static UPawnCombatComponent* NativeGetPawnCombatComponentFromActor(AActor* InActor);UFUNCTION(BlueprintCallable, Category = "XMBWorrior|FunctionLibrary", meta = (DisplayName = "Get Pawn Combat Component From Actor", ExpandEnumAsExecs = "OutValidType"))static UPawnCombatComponent* BP_GetPawnCombatComponentFromActor(AActor* InActor, EWarriorValidType& OutValidType);
UPawnCombatComponent*UXMBWarriorFunctionLibrary::NativeGetPawnCombatComponentFromActor(AActor* InActor)
{
check(InActor);
if (IPawnCombatInterface* PawnCombatInterface = Cast<IPawnCombatInterface>(InActor)){return PawnCombatInterface->GetPawnCombatComponent();}
return nullptr;
}UPawnCombatComponent* UXMBWarriorFunctionLibrary::BP_GetPawnCombatComponentFromActor(AActor* InActor,EWarriorValidType& OutValidType)
{UPawnCombatComponent* CombatComponent =  NativeGetPawnCombatComponentFromActor(InActor);
OutValidType = CombatComponent ? EWarriorValidType::Valid : EWarriorValidType::Invalid;
return CombatComponent;
}

4。启动项目,创建动画状态通知

在Begin内连图

http://www.xdnf.cn/news/12309.html

相关文章:

  • 所有CSS选择器
  • 2025爱分析·银行数字化应用实践报告|爱分析报告
  • 策略梯度核心:Advantage 与 GAE 原理详解
  • 苍穹外卖|学习笔记|day06
  • Day13
  • Grafana-ECharts应用讲解(玫瑰图示例)
  • 定时任务的 cron 表达式
  • OpenEuler24.03 部署RagFlow学习记录(PVE虚拟化环境)
  • 实验科学中策略的长期效应评估学习笔记
  • Day45 Python打卡训练营
  • 图像分割算法入门:从基础到FCN
  • Bean的作用域
  • 代付系统:功能解析与多场景应用深度解读
  • 8天Python从入门到精通【itheima】-69~70(字符串的常见定义和操作+案例练习)
  • 软考 系统架构设计师系列知识点之杂项集萃(81)
  • Spring Bean是否是线程安全的
  • 虎扑正式易主,迅雷完成收购会带来什么变化?
  • Postman常见问题及解决方法
  • 红花基因组2-文献精读141
  • springBoot服务之间的转发
  • el-tabs 切换时数据不更新的问题
  • 驱动:字符驱动操控硬件
  • freeRTOS中断中为什么不能进行任务切换2
  • 基于红黑树的插入功能,对Set和Map部分功能进行封装实现
  • 打造智慧医疗枢纽,香港维尔利引领东南亚健康科技升级
  • 八:操作系统设备管理之RAID
  • STM32 智能小车项目 两路红外循迹模块原理与实战应用详解
  • HTV 3.3 | 秒播无卡顿 直播源每天维护更新
  • Q: 数据库增删改查的逻辑如何实现?
  • 996引擎-自定义装备/道具:限时装备、限时道具