Hey all,
i have some some very basic knowledge of UE4 multiplayer, i’m trying to spawn an AI controlled character from my player character and assign it to a pointer variable, i’m spawning it with a RPC function from BeginPlay like this
void AEVPlayerCharacter::BeginPlay()
{
Super::BeginPlay();
...other stuff...
// Prevent multiple spawn
if(IsLocallyControlled())
SpawnAICharacter();
}
and here the SpawAICharacter function (and relative RPC).
.h
class AEVAICharacter* AIPlayer;
UPROPERTY(EditDefaultsOnly, meta = (AllowPrivateAccess = "true"))
class TSubclassOf<AEVAICharacter> AIPlayerClass;
void SpawnAICharacter();
UFUNCTION(Server, Reliable, WithValidation)
void ServerSpawnAICharacter();
.cpp
void AEVPlayerCharacter::SpawnAICharacter()
{
ServerSpawnAICharacter();
}
void AEVPlayerCharacter::ServerSpawnAICharacter_Implementation()
{
FActorSpawnParameters SpawnParams;
SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
FTransform Tr = GetActorTransform();
AIPlayer = Cast<AEVAICharacter>(GetWorld()->SpawnActor(AIPlayerClass, &Tr, SpawnParams));
AIPlayer->MovementCompleteDelegate.AddDynamic(this, &AEVPlayerCharacter::OnMovementCompleteCallback);
}
bool AEVPlayerCharacter::ServerSpawnAICharacter_Validate()
{
return true;
}
but the variable AIPlayer will never be set on client, any suggestion?