如何让子弹或者一个物体发射出去之后让打中的物体消失呢?
在这里修改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();
}
}
}
忘记了很早以前参考哪位大神的了,在此谢过大神