簡體   English   中英

虛幻引擎4 C ++-如何使角色沿着Z軸上下移動

[英]Unreal Engine 4 C++ - How to make an actor move up and down along the Z axis

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

我猜您的問題比虛幻引擎本身更與如何使用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);
}

您還需要確保您的演員在此范圍內開始游戲,否則可能會永遠上升或下降。

這只是一個基本示例,如果要使其真正強大,就需要詳細說明您的邏輯。 例如,您也可以查看演員的運動方向,以查看您是向上還是向下移動,而不是使用布爾值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM