Unreal Engine 4 Как заставить актера двигаться вверх и вниз по оси Z

Я новичок в движке Unreal 4 и борюсь с некоторыми вещами, касающимися кодирования, так как я хочу, чтобы актер двигался вниз и вверх, как только он достигнет определенной высоты. Вот что я сделал до сих пор:

void APickup::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
FVector NewLocation = GetActorLocation();
NewLocation.Z += (DeltaTime * 20.f);
SetActorLocation(NewLocation);
}

Я не понимаю, как я могу заставить эту работу работать с оператором «If» или оператором «bool». Любая помощь приветствуется. Спасибо!

Обновить:
Актер останавливается на определенной высоте и не двигается, мне нужно, чтобы он сейчас спустился. Вот код:

if(NewLocation.Z <300)
{
NewLocation.Z +=(DeltaTime * 100.f);
SetActorLocation(NewLocation);

0

Решение

Я предполагаю, что ваш вопрос больше связан с тем, как делать вещи в C ++, чем с самим Unreal Engine.

Используя операторы if, вы можете проверить, находитесь ли вы выше определенной высоты или ниже. Однако, если вы хотите, чтобы ваш актер двигался вверх и вниз, вам нужно сохранить какое-то внутреннее состояние. Добавить, например, bool переменная-член для отслеживания этого. В объявлении вашего класса (файл .h)

class APickup {
// ...other things...

bool bImGoingUp = true;
};

Затем в своей функции Tick проверьте, поднимаетесь вы или нет, и соответственно обновите свой рост. Здесь вы также должны проверить, находитесь ли вы выше или ниже своего диапазона Z, и изменить направление движения, если это так. Скажем, вы хотите перемещаться между [-50, 50] (кстати, Unreal использует всегда сантиметры)

void APickup::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
FVector NewLocation = GetActorLocation();
if (NewLocation.Z > 50.0f) {
bImGoingUp = false;
} else if (NewLocation.Z < -50.0f) {
bImGoingUp = true;
}
float factor = (bImGoingUp ? 20.f : -20.f);
NewLocation.Z += factor * DeltaTime;
SetActorLocation(NewLocation);
}

Вы также должны убедиться, что ваш актер начинает игру в этом диапазоне или может в конечном итоге идти вверх или вниз навсегда.

Это просто базовый пример, если вы хотите сделать его действительно надежным, вам нужно немного проработать свою логику. Вы также можете, например, посмотреть направление движения вашего актера, чтобы увидеть, движетесь ли вы вверх или вниз вместо использования логического значения.

0

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

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

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