c++ - Unreal Engine 4 C++ - 如何让 Actor 沿 Z 轴上下移动

标签 c++ actor unreal-engine4

我是 Unreal 4 引擎的新手,我在编码部分遇到了一些问题,因为我希望 Actor 在达到一定高度后立即上下移动。这是我到目前为止所做的:

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

我不知道如何使用“If”语句或“bool”语句来完成这项工作。任何帮助将非常感激。谢谢!

更新: Actor 停在某个高度并没有移动,我现在需要它下降。这是代码:

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

最佳答案

我猜你的问题更多的是关于如何用 C++ 做事,而不是虚幻引擎本身。

使用 if 语句,您可以检查您是高于还是低于特定高度。然而,如果你想让你的 Actor 上下移动,你需要保持某种内在状态。例如添加一个 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);
}

您还需要确保您的 Actor 在这个范围内开始游戏,否则可能会永远上升或下降。

这只是一个基本示例,如果您想让它真正健壮,您需要详细说明您的逻辑。例如,您也可以查看 Actor 的移动方向,看看您是向上还是向下移动,而不是使用 bool 值。

关于c++ - Unreal Engine 4 C++ - 如何让 Actor 沿 Z 轴上下移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47112290/

相关文章:

C++11 和异步,它是如何工作的?

scala - Akka Actor 有多重?

c++ - 虚幻引擎 4 : Converting DrawMesh() from Unity

c++ - 获取控制台句柄

C++ 贷款合格金额

与 Actor 一起使用时的 Scala 变量绑定(bind)

batch-file - 如何使用批处理文件从虚幻引擎 .uproject 文件生成 Visual Studio 项目文件?

C++ Unreal 4 - 指针语法

c++ - 永远不会调用 SetTimer 回调

java - Akka:在参与者之间通信和处理特殊状态(非错误)