начиналась с небольшой задержкой? Таймер (код ниже) не помог. Неужели без каких-то бешенный костылей никак? (в духе флажка и увеличения переменной цикла в методе, забинденном на окончание таймера)
Код:
void AGrasshopper::Move(int Distance)
{
float TimerRate = 5.f;
FTimerHandle TimerHandle;
Super::Move(Distance);
int32 MovesCount = abs(Distance) * MovesInOneStep;
//int32 MovesToMaxHeight = JumpHeight / (MovesCount / 2);
float StepX = StepDistance / MovesInOneStep;
StepX *= Distance < 0 ? (-1) : 1;
float StepY = JumpHeight / (MovesCount / 2);
for (int32 i = 0; i < MovesCount/2; i++)
{
FVector NewLocation = GetActorLocation();
NewLocation.X += StepX;
NewLocation.Y += StepY;
SetActorLocation(NewLocation);
GetWorldTimerManager().SetTimer(TimerHandle, TimerRate, false);
}
for (int32 i = 0; i < MovesCount/2; i++)
{
FVector NewLocation = GetActorLocation();
NewLocation.X += StepX;
NewLocation.Y -= StepY;
SetActorLocation(NewLocation);
GetWorldTimerManager().SetTimer(TimerHandle, TimerRate, false);
}
}
Не знаю как на с++, но на blueprintах это можно сделать так https://www.youtube.com/watch?v=Vag2lhosFD8&ab_channel=AuroraGameworks
да я уже успел обзавидоваться тем, кто на бп пишет
А что если сделать рекурсию с таймером ?
что-то прочитал и аж страшно стало
А зачем делать это в плюсах если от слова рекурсия страшно?
саму рекурсию я не боюсь (частенько в лабах использую), напрягает именно её комбинация с таймерами
Не, это реально страшно. Т.е. внутри функции стартует новый таймер, приходящий снова в эту же функцию - это жёска! Но подозреваю, что автор этого сообщения имел ввиду всего-навсего простой счётчик на таймере, который @a_blintsov собственно выше уже описал (и правильно сделал)
Обсуждают сегодня