ue4 打中物体,物体销毁

本文介绍如何在UE4中通过射线检测技术实现第一人称射击游戏中被子弹击中的物体消失的效果。主要步骤包括修改人物蓝图的.h文件添加RayCast方法,并在.cpp文件中实现该方法来完成射线检测与物体销毁的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何让子弹或者一个物体发射出去之后让打中的物体消失呢?
在这里修改ue4的第一人称射击设计项目的模板。让子弹打中的物体消失
修改项目 .h 文件

这里写图片描述
改为
这里写图片描述

打开人物蓝图【.h】文件,添加一个方法

private:
       void RayCast();

右键该函数,选择【QuickActorSAndRefactorings】–>【Create Declaration/DeFinition】实现它
找到人物蓝图的【.cpp】文件。找到刚才实现的方法

void ARCCharacter::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent)
{
       //InputComponent->BindTouch(EInputEvent::IE_Pressed, this, &ARCCharacter::TouchStarted);
       if (EnableTouchscreenMovement(PlayerInputComponent) == false)
       {
              //注意修改这边的一个函数。调用Onfire函数变为执行RayCast
              // 原来的 PlayerInputComponent->BindAction("Fire", IE_Pressed, this, &ARCCharacter::OnFire);
              PlayerInputComponent->BindAction("Fire", IE_Pressed, this, &ARCCharacter::RayCast);
       }
}

然后开始编写函数

void ARCCharacter::RayCast()
{
       //新建一个hitresult
       FHitResult * HitResult = new FHitResult();
       //获得起始点
       FVector StartTrace = FirstPersonCameraComponent->GetComponentLocation();
       //获得forwardVector
       FVector ForWardVector = FirstPersonCameraComponent->GetForwardVector();
       //设置最终点
       FVector EndTrace = (ForWardVector*2000.f) + StartTrace;
       // Collision Query Params 碰撞查询参数
       FCollisionQueryParams* CQP = new FCollisionQueryParams();
       //判断发出射线是否碰撞
       if (GetWorld()->LineTraceSingleByChannel(*HitResult,StartTrace,EndTrace,ECC_Visibility, *CQP))
       {
              //如果有碰撞,就做一条射线
              DrawDebugLine(GetWorld(),StartTrace,EndTrace,FColor(255,0,0),true);
              //判断是否打中Actor
              if (HitResult->GetActor()!=NULL)
              {
                     //物体销毁
                     HitResult->GetActor()->Destroy();
              }
       }

}

忘记了很早以前参考哪位大神的了,在此谢过大神

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值