Unreal Engine ATriggerVolume
Unreal
- 🎯 Unreal Engine - ATriggerVolume
- 🏷 定义
- 🧩 类继承关系
- ⚙️ 关键特性
- 📝 使用场景
- 🛠️ 示例代码
- **关键函数**
- C++ 绑定 Overlap 事件
- 📦 小结
- 🎮 Unreal Engine — ATriggerVolume 笔记
- 📌 基本概念
- 🏗️ 继承关系
- ⚙️ 特点
- 📝 使用方法
- 1. 放置到场景
- 2. 绑定事件(蓝图)
- 3. 绑定事件(C++)
- 📚 常见应用场景
- ✅ 总结
- 🎮 Unreal Engine - Trigger 系列类对比
- 🏷 什么是 Trigger?
- 📦 常见 Trigger 类
- 🧩 类继承关系图
- ⚙️ 共同特性
- 📝 使用场景
- 🛠️ 示例(蓝图逻辑)
- 📦 小结
🎯 Unreal Engine - ATriggerVolume
🏷 定义
- ATriggerVolume 是 继承自 AVolume 的特殊体积类。
- 用于在场景中检测 Actor 进入 / 停留 / 离开 某个区域。
- 常用于触发事件(如开门、播放音效、切换关卡)。
🧩 类继承关系
UObject└── AActor└── AVolume└── ATriggerVolume
- AVolume:带有体积边界(Brush)的 Actor。
- ATriggerVolume:在 Volume 的基础上,专门用于触发逻辑。
⚙️ 关键特性
- 不可见:游戏运行时默认不可见,不会渲染。
- 碰撞检测:只检测重叠事件(Overlap),不产生物理阻挡。
- 事件绑定:可在蓝图或 C++ 中响应以下事件:
OnActorBeginOverlap
OnActorEndOverlap
OnActorHit
(如果设置了碰撞响应)
📝 使用场景
- 🚪 开门:玩家进入触发区 → 门自动打开。
- 🎶 音效/音乐:进入区域播放环境音。
- 💡 光效/特效:进入某区域触发粒子或灯光。
- 📌 关卡逻辑:进入触发区后切换关卡、更新任务状态。
🛠️ 示例代码
关键函数
-
OnActorBeginOverlap(AActor* OverlappedActor, AActor* OtherActor)
👉 当 Actor 进入 TriggerVolume 时调用。
-
OnActorEndOverlap(AActor* OverlappedActor, AActor* OtherActor)
👉 当 Actor 离开 TriggerVolume 时调用。
C++ 绑定 Overlap 事件
// MyTriggerActor.cpp
AMyTriggerActor::AMyTriggerActor()
{// 获取 TriggerVolume 的 RootComponentOnActorBeginOverlap.AddDynamic(this, &AMyTriggerActor::OnOverlapBegin);OnActorEndOverlap.AddDynamic(this, &AMyTriggerActor::OnOverlapEnd);
}void AMyTriggerActor::OnOverlapBegin(AActor* OverlappedActor, AActor* OtherActor)
{if (OtherActor && OtherActor != this){UE_LOG(LogTemp, Warning, TEXT("Actor entered trigger: %s"), *OtherActor->GetName());}
}void AMyTriggerActor::OnOverlapEnd(AActor* OverlappedActor, AActor* OtherActor)
{UE_LOG(LogTemp, Warning, TEXT("Actor left trigger: %s"), *OtherActor->GetName());
}
📦 小结
- ATriggerVolume = 用于区域检测的 Volume
- ✅ 不可见,不阻挡
- ✅ 检测 Actor 进入/离开
- ✅ 常用于开门、触发音效、关卡逻辑
🎮 Unreal Engine — ATriggerVolume 笔记
📌 基本概念
- ATriggerVolume 是 Unreal Engine 中的一种特殊 Volume 类
- 主要用于 触发事件 (Trigger Events),当物体进入或离开该区域时,游戏逻辑会被触发
- 常用于:
- 开门 / 关门
- 播放动画
- 启动机关
- 切换场景/传送玩家
🏗️ 继承关系
UObject└── AActor└── AVolume└── ATriggerBase└── ATriggerVolume
- UObject → 所有 UE 类的基类
- AActor → 世界中的基础对象
- AVolume → 具有体积(Volume)的 Actor
- ATriggerBase → 用于触发的基类
- ATriggerVolume → 最终的触发体类
⚙️ 特点
- 不可见但有碰撞体积(默认 Box/Sphere/Cylinder)
- 检测 Overlap(重叠事件)
- 可以绑定事件,例如:
OnActorBeginOverlap
→ 当 Actor 进入体积OnActorEndOverlap
→ 当 Actor 离开体积
📝 使用方法
1. 放置到场景
- 在 Place Actors 面板 中搜索 Trigger Volume
- 拖入场景并调整大小
2. 绑定事件(蓝图)
- 选中 Trigger Volume
- 在 细节面板 (Details Panel) 里绑定
OnActorBeginOverlap
和OnActorEndOverlap
- 在事件图(Event Graph)中编写逻辑
3. 绑定事件(C++)
// 头文件
UFUNCTION()
void OnOverlapBegin(AActor* OverlappedActor, AActor* OtherActor);// CPP文件
ATriggerVolume* Trigger = ...;
Trigger->OnActorBeginOverlap.AddDynamic(this, &AMyClass::OnOverlapBegin);void AMyClass::OnOverlapBegin(AActor* OverlappedActor, AActor* OtherActor)
{UE_LOG(LogTemp, Warning, TEXT("Actor entered Trigger Volume"));
}
📚 常见应用场景
- 🚪 门的开关:玩家靠近触发开门动画
- 🔊 音效控制:进入区域播放音乐,离开后停止
- 🎥 镜头切换:进入触发区切换摄像机
- 🌌 传送门:将玩家传送到另一个关卡/坐标
✅ 总结
- ATriggerVolume = “隐形开关”
- 用于检测 Actor 进入/离开区域 并触发逻辑
- 常见于 关卡交互、机关设计、剧情触发
🎮 Unreal Engine - Trigger 系列类对比
🏷 什么是 Trigger?
- Trigger:用于检测 Actor 进入 / 停留 / 离开 某个区域的 特殊体积类 (Volume)。
- 不可见,不产生物理阻挡,仅用于触发事件。
📦 常见 Trigger 类
类名 | 继承关系 | 区域形状 | 用途 |
---|---|---|---|
ATriggerVolume | AVolume → ATriggerVolume | 自定义 Brush 体积(任意形状) | 灵活,适合复杂几何区域 |
ATriggerBox | ATriggerVolume → ATriggerBox | 盒子(长方体) | 方形触发区,如门口区域 |
ATriggerSphere | ATriggerVolume → ATriggerSphere | 球体 | 圆形范围检测,如怪物警戒范围 |
🧩 类继承关系图
UObject└── AActor└── AVolume└── ATriggerVolume├── ATriggerBox└── ATriggerSphere
⚙️ 共同特性
- 不可见:默认游戏运行时不会渲染。
- 只检测 Overlap:不会阻挡 Actor。
- 事件绑定(蓝图或 C++):
OnActorBeginOverlap
OnActorEndOverlap
OnActorHit
(如果开启碰撞响应)
📝 使用场景
- ATriggerVolume
- 关卡区域检测(比如进入房间触发剧情)
- 任意复杂形状触发区
- ATriggerBox
- 方形区域检测(如门口自动开门)
- 电梯区域触发
- ATriggerSphere
- 范围检测(如怪物发现玩家范围)
- 环形触发音效或光效
🛠️ 示例(蓝图逻辑)
- 在关卡中放置 Trigger(Box/Sphere/Volume)。
- 在 蓝图编辑器中绑定:
OnActorBeginOverlap
→ 执行事件(开门/播放音效)。OnActorEndOverlap
→ 执行事件(关门/停止音效)。
📦 小结
- ATriggerVolume:通用,支持任意形状 Brush。
- ATriggerBox:长方体检测区域,简单高效。
- ATriggerSphere:球体检测区域,常用于范围判定。