Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool APlayerChar::TraceFromSelf(FHitResult& OutResult, const float TrackDistance, ECollisionChannel const CollisionChannel)
- {
- if (Controller)
- {
- FVector CameraLocation;
- FRotator CameraRotation;
- Controller->GetPlayerViewPoint(CameraLocation, CameraRotation);
- FVector const StartTrace = CameraLocation;
- FVector const ShootDirection = CameraRotation.Vector();
- FVector const EndTrace = StartTrace + ShootDirection * TrackDistance;
- FCollisionQueryParams TraceParms(FName(TEXT("TraceFromSelf")), true, this);
- bool bHitReturned = false;
- UWorld* const World = GetWorld();
- if (World)
- {
- bHitReturned = World->LineTraceSingle(OutResult, StartTrace, EndTrace, CollisionChannel, TraceParms);
- }
- return bHitReturned;
- }
- return false;
- }
- void APlayerChar::OnFire()
- {
- FHitResult HitResult(EForceInit::ForceInit);
- bool bTraceSuccess = TraceFromSelf(HitResult, 1200.0f, ECollisionChannel::ECC_WorldDynamic);
- if (bTraceSuccess)
- {
- UWorld* const World = GetWorld();
- if (World)
- {
- AActor*const HitActor = HitResult.GetActor();
- if (HitActor)
- {
- bool bIsTarget = HitActor->GetName().Contains("Target");
- if (bIsTarget)
- {
- FVector const ExplosionPOS = HitActor->GetActorLocation();
- FRotator const ExplosionROT = HitActor->GetActorRotation();
- FActorSpawnParameters SpawnParms;
- SpawnParms.Owner = this;
- AExplosion* const Explosion = World->SpawnActor<AExplosion>(ExplosionClass, ExplosionPOS, ExplosionROT, SpawnParms);
- HitActor->Destroy();
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement