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

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内连图

相关文章:

  • Thumb-2指令集及其与STM32的关系
  • [前端]Promsie常见应用场景——网络请求、定时任务、文件操作和并发控制,并以并发请求为详细进行详解
  • python版若依框架开发:前端开发规范
  • Java + Spring Boot + Mybatis 插入数据后,获取自增 id 的方法
  • 客户体验数据使用的三种视角——场景视角
  • 企业管理中,商业智能BI主要做哪些事情?
  • 【Elasticsearch】 查询优化方式
  • 技术文档写作全攻略
  • 三分算法与DeepSeek辅助证明是单峰函数
  • 鸿蒙开发List滑动每项标题切换悬停
  • RAG:大模型微调的革命性增强——检索增强生成技术深度解析
  • 简易EPOLL模型
  • XTEA与TEA的区别
  • Linux信号捕捉技术深度解析
  • 统信桌面专业版如何使用python开发平台jupyter
  • CUDA安装与多版本管理
  • 安科瑞防逆流方案落地内蒙古中高绿能光伏项目,筑牢北疆绿电安全防线
  • 在MATLAB中使用自定义的ROS2消息
  • Next.js+prisma开发一
  • HTV 3.3 | 秒播无卡顿 直播源每天维护更新
  • 网站都有什么功能/中国职业培训在线官网
  • wordpress 替换谷歌/昆明seo排名
  • 昆明网站做的好的公司哪家好/网络舆情监测系统软件
  • 特克斯与凯科斯群岛域名官方网站/近期舆情热点事件
  • 如今做啥网站能致富/网络营销的目的是什么
  • 网上做一道题2元的网站/专业营销推广团队