虚幻引擎4 C ++ - 如何让演员沿Z轴上下移动

时间:2017-11-04 15:24:55

标签: c++ actor unreal-engine4

我是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);

1 个答案:

答案 0 :(得分:0)

我猜你的问题与如何在C ++中做的事情有关,而不是虚幻引擎本身。

使用if语句可以检查您是否高于某个高度或更低。但是,如果你想让你的演员上下移动,你需要保持某种内心状态。例如,添加bool成员变量以跟踪此情况。在您的类声明(.h文件)

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

  bool bImGoingUp = true;
};

然后在您的勾选功能中检查您是上升还是下降并相应地更新您的身高。如果您高于或低于Z范围,也需要检查,如果是,请更改移动方向。假设您想要在[-50,50]之间移动(顺便说一下,虚幻使用始终厘米)

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);
}

你还需要确保你的演员在这个范围内开始游戏,或者最终可能会永远上升或下降。

这只是一个基本的例子,如果你想让它真正健壮,你需要详细说明你的逻辑。你也可以看一下你演员的动作方向,看看你是向上还是向下移动而不是使用布尔值。