虚幻引擎碰撞相关的属性

一、Collision Enabled
  • NoCollision
    完全禁用碰撞检测和物理模拟
    适用于不需要任何碰撞交互的静态物体和特效‌
  • QueryOnly
    可进行射线检测/重叠,不进行物理模拟
    适用于需要碰撞事件但无需物理响应的逻辑、如触发区域检测
  • PhysicsOnly
    仅参与物理模拟(刚体碰撞),不参与射线检测、Sweep、Overlap 查询
    可以触发OnComponentHit,需要开启Simulation Generates Hit Events,并发生碰撞
    适用于完全由物理驱动、不需要被 Trace 或检测的对象
  • QueryAndPhysics
    同时启用空间查询和物理模拟,性能开销最大
    适合需要物理交互且要触发事件的对象

二、Trace Channel和Object Type等相关名词
1.ECollision Channel

ECollisionChannel是真正的碰撞通道,ObjectChannel 和 TraceChannel 都是 ECollisionChannnel的子集

复制代码
enum ECollisionChannel
{
    ECC_WorldStatic,
    ECC_WorldDynamic,
    ECC_Pawn,
    ECC_PhysicsBody,
    ECC_Vehicle,
    ECC_Destructible,
    ECC_Visibility,
    ECC_Camera,
    ECC_GameTraceChannel1,
    ...
};
2. Object Channel

本质是ECollisionChannel 被蓝图包装为EObjectTypeQuery

使用它来表示物体是什么类型,可以设为物体的ObjectType,

复制代码
    ECC_WorldStatic,
    ECC_WorldDynamic,
    ECC_Pawn,
    ECC_PhysicsBody,
    ECC_Vehicle,
    ECC_Destructible,

WorldStatic :适用于所有不用移动的Actor,最好的例子就是Static Mesh Actors
WorldDynamic :适用于所有因动画或者代码影响而移动的Actor,如电梯和门
Pawn :适用于所有有玩家空的实体,例如玩家的角色
PhysicsBody :适用于所有因物理引擎模拟而运动的Actor
Vehicle :适用于所有载具,如汽车,飞机
Destructible:适用于所有可被破坏的物体,如窗户

3. Trace Channel

本质是ECollisionChannel 被蓝图包装为ETraceTypeQuery

不能设为物体的ObjectType,

复制代码
	ECC_Visibility,
	ECC_Camera,
4. Preset

Preset即为Profile,它是将CollisionEnabled\CollisionResponse\ObjectType的组合起来一个东西

三、自定义CollisionChannel
  1. 项目设置中
    依次分别是Trace Channel和Object Channel和Preset,
    新建Trace Channel和Object Channel时可以设置其他通道对这个通道的默认响应行为,一共最多可以创建1个

2.C++中 ,可以直接define 方便在C++中使用

复制代码
#define ECC_SkeletalMesh ECollisionChannel::ECC_GameTraceChannel1
#define ECC_HitBox ECollisionChannel::ECC_GameTraceChannel2

四、碰撞响应CollisionResponse
忽略 (Ignore)

效果

物体将不会与其他物体发生碰撞或交互。即使两物体在物理上重叠,它们也不会触发任何碰撞事件(例如,物理反应或触发器事件)。
应用场景

通常用于那些不需要物理互动的物体,比如子弹的射击轨迹、UI元素等。

重叠 (Overlap)

效果

物体之间可以发生重叠,即物体会穿透彼此,但不会阻止物体继续移动。碰撞事件(如 OnOverlapBegin 和 OnOverlapEnd)会被触发,可以用于响应事件或检测物体是否接触。
应用场景

适用于需要检测物体接触但不想阻止物体穿透的情况。例如,触发器、拾取物品、角色与道具的互动等。

阻挡 (Block)

效果

物体将阻挡其他物体的运动。碰撞会影响物体的物理行为,例如推开、停止或反弹。阻挡会有效防止物体穿透或重叠,并触发物理反应。
应用场景

适用于大多数实体物体,特别是角色和环境中的固体物体,例如墙壁、地面、障碍物等。

设置碰撞响应:

可以在项目设置中,设置Preset碰撞预设来调整其他通道的响应

或者在角色的碰撞体下将Preset设为Custom来调整其他通道的响应

碰撞的结果

首先 看两个物体对对方的响应,用伪代码演示为:

复制代码
ResponseA = A.ResponseTo(B.ObjectType);
ResponseB = B.ResponseTo(A.ObjectType);

然后看下图,根据ResponseA和ResponsB 得出最终结果


五、使用C++函数设置
复制代码
//设置ObjectType
CollisionBox->SetCollisionObjectType(ECollisionChannel_WorldDynamic);

//设置Collision Response
CollisionBox->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Block);
CollisionBox->SetCollisionResponseToChannel(ECollisionChannel::ECC_Camera, ECollisionResponse::ECR_Ignore);

//设置Collision Enabled
CollisionBox->SetCollisionEnabled(ECollisionEnabled::NoCollision);

//设置整个预设Preset/Profile
CollisionBox->SetCollisionProfileName(TEXT("Ragdoll"));
相关推荐
晴夏。20 分钟前
UE垃圾回收的全方面讲解(通俗易懂)【底层实现、触发方式、引用保持、优化、工具】
ue5·游戏引擎·ue·垃圾回收
相信神话202112 小时前
3.2《酒魂》规则设计文档
游戏引擎·godot·2d游戏编程·godot4·2d游戏开发
Avalon71221 小时前
Unity3D响应式渲染UI框架UniVue
游戏·ui·unity·c#·游戏引擎
风酥糖1 天前
Godot游戏练习01-第33节-新增会爆炸的敌人
游戏·游戏引擎·godot
郑寿昌1 天前
UE5与UE6在Lumen和Nanite的差异解析
游戏引擎·图形渲染·着色器
郑寿昌2 天前
UE6 AI加速Lumen光线追踪降噪技术解析
人工智能·游戏引擎
晴夏。2 天前
GAS下的网络同步的全面分析【超级全面】
游戏引擎·ue·gas·网络同步
田鸡_2 天前
Unity新输入系统(Input System)教学篇
unity·游戏引擎·游戏程序
EQ-雪梨蛋花汤2 天前
【Unity笔记】Unity 音游模板与免费资源:高效构建节奏游戏开发全指南
笔记·unity·游戏引擎
微莱羽墨2 天前
零、0基础入门Unity 安装详细教程(2026最新版教程,安装Unity看这一篇就够了!)
unity·游戏引擎·unity安装