Advertisement
Guest User

Untitled

a guest
Jul 13th, 2014
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. bool APlayerChar::TraceFromSelf(FHitResult& OutResult, const float TrackDistance, ECollisionChannel const CollisionChannel)
  2. {
  3.     if (Controller)
  4.     {
  5.         FVector CameraLocation;
  6.         FRotator CameraRotation;
  7.         Controller->GetPlayerViewPoint(CameraLocation, CameraRotation);
  8.  
  9.         FVector const StartTrace = CameraLocation;
  10.         FVector const ShootDirection = CameraRotation.Vector();
  11.         FVector const EndTrace = StartTrace + ShootDirection * TrackDistance;
  12.  
  13.         FCollisionQueryParams TraceParms(FName(TEXT("TraceFromSelf")), true, this);
  14.         bool bHitReturned = false;
  15.         UWorld* const World = GetWorld();
  16.         if (World)
  17.         {
  18.             bHitReturned = World->LineTraceSingle(OutResult, StartTrace, EndTrace, CollisionChannel, TraceParms);
  19.         }
  20.         return bHitReturned;
  21.     }
  22.     return false;
  23. }
  24.  
  25. void APlayerChar::OnFire()
  26. {
  27.     FHitResult HitResult(EForceInit::ForceInit);
  28.     bool bTraceSuccess = TraceFromSelf(HitResult, 1200.0f, ECollisionChannel::ECC_WorldDynamic);
  29.     if (bTraceSuccess)
  30.     {
  31.         UWorld* const World = GetWorld();
  32.         if (World)
  33.         {
  34.             AActor*const HitActor = HitResult.GetActor();
  35.             if (HitActor)
  36.             {
  37.                 bool bIsTarget = HitActor->GetName().Contains("Target");
  38.                 if (bIsTarget)
  39.                 {
  40.                     FVector const ExplosionPOS = HitActor->GetActorLocation();
  41.                     FRotator const ExplosionROT = HitActor->GetActorRotation();
  42.  
  43.                     FActorSpawnParameters SpawnParms;
  44.                     SpawnParms.Owner = this;
  45.  
  46.                     AExplosion* const Explosion = World->SpawnActor<AExplosion>(ExplosionClass, ExplosionPOS, ExplosionROT, SpawnParms);
  47.                     HitActor->Destroy();
  48.                 }
  49.             }
  50.         }
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement