UE5 03-物体碰撞检测

在你需要碰撞的物体上添加一个碰撞检测组件

碰撞预设 设置为NoCollision,这样移动过程中就不会有物理碰撞阻挡效果,只负责检测是否碰撞,比较难解释,如果学过Unity的话,可以把它理解成 Collision 为 Trigger 

-------------------下面这个有点像Unity的OnTriggerEnter,跟OnCollisionEnter的感jio------------------ 

这里需要注意的点是: 如果是物体跟触发区域检测 使用这个节点

如果是物体跟实体碰撞检测 使用这个节点

在Unreal Engine 5UE5)中,检测多个物体碰撞可以通过多种方法实现。以下是一些常用的方法: ### 1. 使用Overlap事件 Overlap事件是UE5中常用的检测碰撞的方法。你可以在蓝图中或通过C++代码来实现。 #### 蓝图实现: 1. **添加碰撞组件**:在你的角色或物体上添加一个碰撞组件(如Box Collision、Sphere Collision等)。 2. **设置碰撞响应**:在碰撞组件的细节面板中,设置“生成重叠事件”(Generate Overlap Events)为开启。 3. **绑定事件**:在蓝图中,绑定“BeginOverlap”和“EndOverlap”事件到你的角色或物体上。 4. **处理碰撞**:在事件处理函数中,你可以获取所有重叠的物体并进行相应的处理。 #### C++实现: ```cpp // 在你的角色类中添加以下代码 virtual void NotifyActorBeginOverlap(AActor* OtherActor) override { Super::NotifyActorBeginOverlap(OtherActor); // 处理碰撞逻辑 } virtual void NotifyActorEndOverlap(AActor* OtherActor) override { Super::NotifyActorEndOverlap(OtherActor); // 处理碰撞逻辑 } ``` ### 2. 使用射线投射(Line Trace) 射线投射可以用来检测从一点到另一点的碰撞情况。 #### 蓝图实现: 1. **使用Line Trace节点**:在蓝图中,使用“Line Trace By Channel”或“Line Trace for Objects”节点。 2. **设置射线参数**:设置射线的起点、方向、长度和检测的物体类型。 3. **处理检测结果**:在“Hit”节点中,你可以获取所有被射线击中的物体并进行相应的处理。 #### C++实现: ```cpp FHitResult HitResult; FVector Start = GetActorLocation(); FVector End = Start + GetActorForwardVector() * 1000.0f; FCollisionQueryParams CollisionParams; if (GetWorld()->LineTraceSingleByChannel(HitResult, Start, End, ECC_Visibility, CollisionParams)) { // 处理碰撞逻辑 } ``` ### 3. 使用物理碰撞 如果你的物体有物理属性(如Rigid Body),你可以通过物理引擎来检测碰撞。 #### 蓝图实现: 1. **设置物理属性**:在物体的细节面板中,设置“模拟物理”(Simulate Physics)为开启。 2. **绑定事件**:在蓝图中,绑定“Hit”事件到你的物体上。 3. **处理碰撞**:在事件处理函数中,你可以获取所有碰撞物体并进行相应的处理。 #### C++实现: ```cpp virtual void NotifyHit(UPrimitiveComponent* MyComp, AActor* Other, UPrimitiveComponent* OtherComp, bool bSelfMoved, FVector HitLocation, FVector HitNormal, FVector NormalImpulse, const FHitResult& Hit) override { Super::NotifyHit(MyComp, Other, OtherComp, bSelfMoved, HitLocation, HitNormal, NormalImpulse, Hit); // 处理碰撞逻辑 } ``` ### 总结 以上是几种在UE5中检测多个物体碰撞的方法。根据具体需求和场景选择合适的方法来实现碰撞检测
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值