ue4 打中物体,物体销毁

来源:互联网 发布:云服务器ecs绑定域名 编辑:程序博客网 时间:2024/05/01 08:27

如何让子弹或者一个物体发射出去之后让打中的物体消失呢?
在这里修改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();              }       }}

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

原创粉丝点击