Проблемы с камерой в сети с Unreal Engine 4

В настоящее время я работаю над проектом, в котором все мои игроки используют разные камеры.

Сначала я подумал об использовании UCameraComponent, но каждая камера должна поворачиваться вокруг определенной точки и не двигаться при движении пешек.

Поэтому я решил создать актера камеры в BeginPlay () моей пешки.

void AMyCharacter::BeginPlay()
{
Super::BeginPlay();
if (!hasCamera) { // Camera not set yet
FVector vectpos; // Target position of the camera
vectpos.X = -1130;
vectpos.Y = 10;
vectpos.Z = 565;
FRotator rotation;
rotation.Pitch = -22;
rotation.Yaw = 0;
rotation.Roll = 0;APlayerController* controller = Cast<APlayerController>(GetController());

if (controller == NULL) // When I'm on client, the GetController() return NULL.
{
// Trying to find the controller of my client
for (FConstPlayerControllerIterator Iterator = GetWorld()->GetPlayerControllerIterator(); Iterator; ++Iterator)
{
controller = *Iterator;
//On client, there is only 1 controller according to the documentation.
}
}

if (controller != NULL)
{
controller->SetViewTarget(Camera); // Set the view with the new camera
}
SetCamera(true); // Call and RPC Function to update the hasCamera variable
}
}

Это работает для первого игрока, и после этого это зависит. Иногда второй игрок получает камеру, которая работает нормально, но иногда он просматривает не ту камеру и переменная Camera не совпадает с той, в которую он смотрит. Иногда, когда новые игроки присоединяются к игре, это делает первый / второй игрок смотрит не в ту камеру.

Вот схема GameInstance, которую мы используем, чтобы установить LAN-соединение между клиентами и сервером (первый клиент, создавший игру)
План GameInstance

Если кто-то может выяснить, почему камера работает не так, как ожидалось, это было бы очень приятно! Спасибо всем заранее за вашу помощь.

0

Решение

Видимо, Вы выбрали неправильный путь.

В UE4 ‘ACharacter’ (APawn если быть точным) это представление персонажей в мире, так что у вас будет один для каждого игрока. Таким образом, странно вставлять код вашей камеры в него.

Вы должны сделать свой собственный контроллер (например, «AMyPlayerController») и управлять камерой с него. Очевидно, только для местного игрока.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]