1. ホーム
  2. c++

[解決済み] アクターを前後に移動させる方法 Unreal Engine

2022-02-12 08:23:56

質問

Unreal Engine の初心者ですが、アクターを元の配置場所からポイント B に移動し、ループ内で元の配置場所に戻ってから B に移動しようとしています。C++でこれを行うにはどうしたらよいでしょうか?私はこのすべてについてあまり知らないが、それがどのように動作するかを研究する宿題を持っています。C++のアクタークラスの作り方は知っていますが、C++のクラスでは、どのように静的メッシュに割り当て、どのように設定されたアクターの位置ですべての動きをさせるのでしょうか?

ありがとうございました。

解決方法は?

わかりましたので、以下のようにして解決しました。

に以下を追加しました。 .h ファイル

    APlateUp();

    UPROPERTY(EditAnywhere)
        UShapeComponent* Root;

    UPROPERTY(EditAnywhere)
        UStaticMeshComponent* MyMesh;

float RunningTime;

は、クラス public で

そして、その中の .cpp ファイルを追加しました。

    Root = CreateDefaultSubobject<UBoxComponent>(TEXT("Root"));
    RootComponent = Root;

    MyMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MyMesh"));
    MyMesh->AttachTo(RootComponent);

をmain関数に追加し、さらに

    FVector NewLocation = GetActorLocation();
    float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));

    NewLocation.Z += DeltaHeight * 200.0f;
    RunningTime += DeltaTime;
    SetActorLocation(NewLocation);

を変更することももちろん可能です。 NewLocation.Z をXまたはYに変更し、オブジェクトが動く力を変更することができます。

これらの解答は、ウォッチングによって提供されました。 ルーベン・ウォード をYouTubeで公開しているので、そちらで詳しく解説しています。もし誰かが同じ問題に直面したら、簡単に答えが得られるように、私は自分の質問に答えているだけです。また、オブジェクトを特定の位置で停止させたい場合は、このようにすることができます。

    if (NewLocation.Z < 7700.0) {
        float DeltaHeight = ((RunningTime + DeltaTime) - (RunningTime));
        NewLocation.Z += DeltaHeight * 100.0f;
        RunningTime += DeltaTime;
        SetActorLocation(NewLocation);
    }

そしてもちろん NewLocation.Z をXまたはYに、そして 7700.0 をその軸上の好きな位置に設定します。これは、現在の新しい位置が指定した値より小さいかどうかをチェックし、小さい場合は軸上でオブジェクトを移動し続けます。この関数について質問があれば、遠慮なくどうぞ。