41. UE5 RPG 设置火球术的碰撞类型

在上一篇中,我们设置了火球术从发射到击中敌人的整个周期使用的音效和特效,现在看上去它像一个真正的火球术了。在这一篇文章里面,我们主要解决一下火球术碰撞的问题,现在已知的问题是,有些不需要和火球产生碰撞的物体(比如药瓶)需要修复,有些场景静态物体无法和火球产生碰撞(比如立柱)都是我们需要解决的。

碰撞预设

碰撞主要分为四个部分:

  1. 碰撞预设:UE内置的碰撞设置,可以一键修改对应的内容。
  2. 设置碰撞:可以根据物理设置碰撞开关,只查询还是会产生碰撞
  3. 对象类型:相当于我们定义的当前物体的类型,对物体进行了分类,方便我们设置物体对不同的类型相应修改。
    在这里插入图片描述
    UE内置了很多的预设,它会将其它三项的修改保存为一个配置项一键切换的快捷键。
    在这里插入图片描述
    设置碰撞可以根据需求进行设置。
    在这里插入图片描述
    对象类型这里,为UE内置的几种,给我们分好的类型,场景内的静态(建筑)和动态物体(药瓶),角色Pawn,模拟物理的类型等等,后面我们也会创建自己的类型。
    在这里插入图片描述
    这里主要分为了两大块,一块是碰撞响应,另一块是对象于其它类型之间的响应。我们可以在项目设置里面增加对应的通道。
    碰撞检测通道主要是用于鼠标拾取时,需要设置对应通道,比如,物体设置Visibility重叠,也就意味着将物体添加到了Visibility响应列表,在射线拾取时,可以节省计算性能。
    物体相应则是物体之间的响应,而且必须要双方都设置成阻挡或重叠才可以实现,单方面无法实现响应。
    在这里插入图片描述
    重叠指两个物体重叠时,并且设置重叠相应,生成重叠事件为true时能够获取到重叠事件回调
    在这里插入图片描述
    阻挡相当于是物体产生碰撞时,将会阻挡住物体继续前进。

创建新的碰撞类型

这里我们实现自定义一个新的碰撞类型,作为火球术使用的类型。
我们找到引擎-碰撞,这里可以添加新的碰撞类型,新的检测通道,以及设置新的预设。
在这里插入图片描述
我们添加一个新的碰撞类型,设置为Projectile
在这里插入图片描述
然后你在重新打开物体的碰撞,会发现,物体增加了对应的类型和碰撞设置
在这里插入图片描述
如果在代码中使用,我们需要先定义,这样方便后面修改,在代码文件夹根目录找到项目的.h文件,这样方便其它文件引用,ECollisionChannel::ECC_GameTraceChannel1代表我们添加的碰撞类型的第一个类型,我们将其定义为自己需要名称。如果列表修改了,我们也只需要修改后面的数字即可。不会去代码里面修改每个名称数字。

#define ECC_PROJECTILE ECollisionChannel::ECC_GameTraceChannel1

有了自定义类型,我们在蓝图中,可以在配置项直接修改它的类型,在代码中将需要使用代码修改
我们在火球的基类发射物类的构造函数这里,创建了碰撞体以后,使用代码设置一下它的碰撞类型即可。

AProjectile::AProjectile()
{... //初始化碰撞体Sphere = CreateDefaultSubobject<USphereComponent>("Sphere");SetRootComponent(Sphere); //设置其为根节点,Sphere->SetCollisionObjectType(ECC_PROJECTILE); //设置发射物的碰撞类型...

设置于自定义碰撞类型的重叠事件

如果你在蓝图中设置实现,需要在碰撞体这里开启生成重叠事件,并且将对应项设置为重叠,即可实现事件。
在这里插入图片描述
如果你在代码中设置,那么需要调用对应的函数
比如,我在角色上面,设置了,不会响应相机碰撞,但是对发射物类型产生重叠事件,并开启了重叠事件。

	GetCapsuleComponent()->SetCollisionResponseToChannel(ECC_Camera, ECR_Ignore);GetCapsuleComponent()->SetCollisionResponseToChannel(ECC_PROJECTILE, ECR_Overlap); //设置碰撞体可以和发射物产生重叠GetCapsuleComponent()->SetGenerateOverlapEvents(true); //设置碰撞体可以生成重叠事件

设置发射物身上的碰撞

在发射物身上,同样需要开启重叠事件,并且要设置查询,将类型设置为我们自定义类型。
在这里插入图片描述
在代码中设置就是如下

	//初始化碰撞体Sphere = CreateDefaultSubobject<USphereComponent>("Sphere");SetRootComponent(Sphere); //设置其为根节点,Sphere->SetCollisionObjectType(ECC_PROJECTILE); //设置发射物的碰撞类型Sphere->SetCollisionEnabled(ECollisionEnabled::QueryOnly); //设置其只用作查询使用Sphere->SetCollisionResponseToChannels(ECR_Ignore); //设置其忽略所有碰撞检测Sphere->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); //设置其与世界动态物体产生重叠事件Sphere->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); //设置其与世界静态物体产生重叠事件Sphere->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); //设置其与Pawn类型物体产生重叠事件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2982192.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统-服务器硬件及RAID配置

目录 一.服务器 1.服务器与普通计算机的区别 2.功能 3.分类&#xff08;按照产品形态分&#xff09; 4.架构&#xff08;按照指令集类型&#xff09; 5.相关指令 5.1.查看服务器CPU的信息 5.2.查看服务器内存的信息 二.RAID磁盘阵列&#xff08;Redundant Array …

免费SSL证书和付费SSL证书区别在哪

免费SSL证书与付费SSL证书在多个方面存在差异&#xff0c;这些差异主要体现在认证级别、保障金额以及服务范围上。在以下几个方面存在显著区别&#xff1a; 1、验证类型和信任级别&#xff1a; 免费SSL证书&#xff1a;通常只提供域名验证&#xff08;DV&#xff09;级别的证…

金融圈卷到挤不进?那是因为你不是中国人民大学与加拿大女王大学金融硕士

金融圈是一个高度竞争的行业&#xff0c;对于求职者的学历、能力、经验和资源有着较高的要求。由此金融人们会常说金融圈已经卷到挤不进去的程度。在这个行业中&#xff0c;就像双非&#xff08;非985/211高校毕业&#xff0c;非金融相关专业毕业&#xff09;的学生就往往面临着…

【面试经典 150 | 数组】Z 字形变换

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;二维矩阵模拟方法二&#xff1a;一次遍历 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于…

C++中的五种高级初始化技术:从reserve到piecewise_construct等

C高级初始化技术&#xff1a;reserve、emplace_back、constinit、Lambda表达式、piecewise_construct 一、简介二、reserve 结合 emplace_back三、C 20的constinit四、Lambda表达式和初始化五、make_unique_for_overwrite六、piecewise_construct 和 forward_as_tuple七、总结 …

物联网的基本功能及五大核心技术——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网基本功能 物联网的最基本功能特征是提供“无处不在的连接和在线服务”&#xff0c;其具备十大基本功能。 &#xff08;1&#xff09;在线监测&#xff1a;这是物联网最基本的功能&#xff0c;物联网业务一般以集中监测为主、控制为…

Golang | Leetcode Golang题解之第42题接雨水

题目&#xff1a; 题解: func trap(height []int) (ans int) {n : len(height)if n 0 {return}leftMax : make([]int, n)leftMax[0] height[0]for i : 1; i < n; i {leftMax[i] max(leftMax[i-1], height[i])}rightMax : make([]int, n)rightMax[n-1] height[n-1]for i…

Esp32s3固件烧写

芯片图片 烧写完成之后来一段代码,点亮自带的WS2182灯珠 from machine import Pin import neopixel,time# 输出的引脚定义。 pin = Pin(48,Pin.OUT) # 我这块板子上的板载RGB是48脚。可以查看原理图或者直接找个ws2812B灯珠接上正负极和自己定义一个引脚。# 灯珠控制 Int…

安装 Nginx 的三种方式

通过 Nginx 源码安装需要提前准备的内容&#xff1a; GCC 编译器 Nginx 是使用 C 语言编写的程序&#xff0c;因此想要运行 Nginx 就需要安装一个编译工具 GCC 就是一个开源的编译器集合&#xff0c;用于处理各种各样的语言&#xff0c;其中就包含了 C 语言 使用命令 yum i…

电力调度自动化系统由什么构成?

电力调度自动化系统由什么构成&#xff1f; 电力调度自动化系统通过数据采集与传输、数据处理与存储、监视与控制、优化与决策、通信网络和系统应用软件等构成&#xff0c;实现对电力系统的监控、控制和优化。 电力调度自动化系统是一种集成了计算机技术、通信技术、自动化技术…

上位机图像处理和嵌入式模块部署(树莓派4b开机启动脚本)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 编写好程序之后&#xff0c;一般要求程序开机启动后就可以运行。所以这个时候&#xff0c;我们一般就会把程序流程放在开发板的启动脚本当中。如果…

Ubuntu系统开机长

Ubuntu系统开机长 1. 检查开机自启动软件的所占时间2. 将耗时最高的禁止开机自启动 1. 检查开机自启动软件的所占时间 systemd-analyze blame2. 将耗时最高的禁止开机自启动 sudo systemctl disable networking.service这个耗时是有阈值的&#xff0c;一般大于15s的算&#x…

k8s-pod 控制器

文章目录 k8s-pod 控制器无状态服务与有状态服务无状态服务pod 控制器ReplicationController(RC)ReplicaSet(RS)Label 和 Selector Deployment创建滚动更新回滚版本扩容/缩容暂停和恢复 StatefulSet创建扩容/缩容更新RollingUpdate->金丝雀发布OnDelete 删除 DaemonSet节点选…

JumpServer 堡垒机架构

需求背景&#xff1a; 最近由于项目审计需要&#xff0c;要求企业加固应用和系统&#xff0c;顺便加固一些日常使用的软件和系统&#xff0c;远程接入访问安全问题。 需求目的&#xff1a; 部署实施&#xff1a; 1、系统安装 安装执行 curl -sSL https://resource.fit2clou…

Spring 注解开发详解

1. 注解驱动入门案例介绍 1.1 需求描述 1.需求&#xff1a;实现保存一条数据到数据库。 2.表结构&#xff1a;create table account(id int primary key auto_increment,name varchar(50),money double(7,2)); 3.要求&#xff1a;使用spring框架中的JdbcTemplate和DriverMana…

问题记录:交换两行printf -打印结果不同

环境 os: windows IDE: iar toolchain&#xff1a;iar9.32 board: STM32F429 问题描述 同一个float变量&#xff0c;用两行printf打印&#xff0c;先%d打出来&#xff0c;再%.3f打出来&#xff0c;前者输出32&#xff08;正确&#xff09;&#xff0c;后者打出来是0.000。顺…

贝叶斯网络(概念、应用、实例)

目录 一、贝叶斯网络基本概念 1.1主要组成 1.2概率模型 1.3应用场景 1.4推理方法 1.5学习 二、贝叶斯网络在机器学习中的应用 三、应用实例 3.1分类 3.2推荐系统 3.3自然语言处理 一、贝叶斯网络基本概念 贝叶斯网络&#xff0c;也称为信念网络或有向无环图模型&am…

微信小程序开发六(自定义组件)

自定义组件的创建&#xff1a; 如何创建&#xff1a; 右键选择新建component 创建完成之后需要打开app.json&#xff0c;这是全局使用这个组件&#xff0c;想要单独的页面使用&#xff0c;就在当前页面的json文件中定义 "usingComponents": {"my-zj": &quo…

电子邮件免费版有哪些?免费注册电子邮箱

电子邮件有付费版和免费版两种类型&#xff0c;付费版通常具有更大的电子邮箱容量和更强大的电子邮箱功能。但是对于我们个人用户或者是中小型企业来说注册电子邮箱免费版的就够日常使用了。电子邮件的免费版提供商有Zoho Mail、微软、腾讯等&#xff0c;今天我们就来具体了解下…

电子温度计不准需要怎么处理?

电子温度计不准需要怎么处理&#xff1f; 首选将温度计完全浸入温度为0℃左右的水中&#xff0c;使温度计指示值与0℃相等&#xff0c;拿出测量待测物的温度。其次将温度计完全浸入温度为100℃左右的水中&#xff0c;使温度计指示值与100℃相等&#xff0c;拿出测量待测物的温…