I’m making a simple competitive team game where you play as balls. I’m trying to get respawn working in my code (specifically respawn when falling out of bounds), and found the GameMode->RestartPlayer(PlayerController) method that supposedly does just that. However, calling the function with a reference to my player controller does nothing. Can somebody help me figure out what I’m doing wrong? I spent some time looking through the Shooter Game source, but still wasn’t able to figure it out.
Here’s my code:
////////////////////////////////
// BallPawn.cpp
////////////////////////////////
void ABallPawn::Tick(float DeltaTime) {
Super::Tick(DeltaTime);
// ...
// Check for out of bounds
{
if (GetActorLocation().Z < -1000.0f) {
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("PLAYER KILLED"));
Cast<ABallPlayerController>(GetController())->Respawn();
}
}
// ...
}
////////////////////////////////
// BallPlayerController.cpp
////////////////////////////////
void ABallPlayerController::Respawn() {
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, TEXT("RESPAWN"));
GetWorld()->GetAuthGameMode()->RestartPlayer(this);
}
The debug messages are being spammed to the screen, yet the ball is not respawned. It just falls endlessly.