【UnrealEngine】ゲーム内で浮遊するアクタを作成しよう【C++】
ゲーム内で空中にふわふわ浮いているようなアクタをC++で作成してみようと思います。
【実装例】
◆アクタの作成
コードを記述する前にアクタを作成していこう!
コンテンツドロワーを立ち上げて、C++クラスフォルダに移動した後に、右クリック→新規C++クラスからアクタを作成する。
今回名称は「MoveClass」としておきます。

◆実装コード一覧
新規C++クラスを作成すると同時にVisual Studioが立ち上がるので各ファイルにコードを記述していく。
・ヘッダーファイル(.h)
.h
C++ サンプル
// ===========================
// ▼ここから
// ===========================
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MoveClass.generated.h"
UCLASS()
class MYPROJECT2_API AMoveClass : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMoveClass();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
protected:
FVector StartLocation;
UPROPERTY(EditAnywhere, Category="Floating")
float Amplitude = 50.0f;
UPROPERTY(EditAnywhere, Category="Floating")
float Speed = 2.0f;
};
// ===========================
// ▲ここまで
// ===========================
・ソースファイル(.cpp)
.cpp
C++ サンプル
// ===========================
// ▼ここから
// ===========================
// Fill out your copyright notice in the Description page of Project Settings.
#include "MoveClass.h"
// Sets default values
AMoveClass::AMoveClass()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
}
// Called when the game starts or when spawned
void AMoveClass::BeginPlay()
{
Super::BeginPlay();
StartLocation = GetActorLocation();
}
// Called every frame
void AMoveClass::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
float Time = GetWorld()->GetTimeSeconds();
float OffsetZ = FMath::Sin(Time * Speed) * Amplitude;
FVector NewLocation = StartLocation;
NewLocation.Z += OffsetZ;
SetActorLocation(NewLocation);
}
// ===========================
// ▲ここまで
// ===========================
◆ゲーム内に配置して動作確認
各ファイルへのコードの記載が完了したらUnrealEngineに戻り、コンパイルしてゲーム内にアクタを配置してゲームをプレイすると、浮遊するアクタの完成。
もう少し頑張ってみよう!
図の赤枠内を押下してコンパイル

コンパイルエラー(出力ログに赤文字が出る)になってしまった場合は、コンパイルボタン横の3つの点を押して「ライブコーディングの有効化」をオフにしてコンパイルしてみよう。
これでエラーが改善することあり。

コンパイルが成功したらコンテンツドロワー内の「MoveClass」をゲーム内にドラッグ&ドロップで配置する。

MoveClassを選択したまま詳細タブに移動。追加を押下してキューブを選択しStaticMeshを設定する。

ゲームをプレイで浮遊するアクタが実装できたら完成!
ここまでお疲れ様でした。
