Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void ATankPlayerController::Tick(float DeltaSeconds)
- {
- Super::Tick(DeltaSeconds);
- if(LineTraceTankAim()) UE_LOG(LogTemp, Warning, TEXT("line good"));
- }
- bool ATankPlayerController::LineTraceTankAim() const
- {
- auto AimDirection = FVector(0.0f);
- GetAimDirection(AimDirection);
- //get start and end of trace line
- auto CamPos = GetAutoActivateCameraForPlayer()->GetActorLocation(); //start
- auto TraceEnd = CamPos + AimDirection*ShootRange; //end
- FHitResult HitResult; //output
- return GetWorld()->LineTraceSingleByChannel
- (
- HitResult,
- CamPos, TraceEnd,
- ECollisionChannel::ECC_Visibility,
- FCollisionQueryParams::DefaultQueryParam,
- FCollisionResponseParams::DefaultResponseParam
- );
- }
- bool ATankPlayerController::GetAimDirection(FVector& OutAimDirection) const
- {
- //get rasterized crosshair coordinates
- int32 cx,cy;
- GetViewportSize(cx, cy);
- float cfx = cx * CrosshairX;
- float cfy = cy * CrosshairY;
- FVector wl; //wl is garbage
- return DeprojectScreenPositionToWorld(cfx,cfy, wl, OutAimDirection); //got AimDirection
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement