ポーンを操作して遊んでみようぜ!

前提

Unreal Engine 4.11.2 Visual Studio 2015

はじめに

おそらくどのエンジンを使っても一番最初にやるであろう、移動、回転、拡縮をこの記事では扱っていきます。

移動、回転、拡縮

Tickメソッド内に以下のコードを記述するだけでオブジェクトの移動、回転、拡縮を実現することができます。

移動

FVector Location = GetActorLocation();
Location.Y = Sin * 50;
SetActorLocation( Location );

回転

FRotator Rotate = GetActorRotation();
Rotate.Yaw += DeltaTime * 100;
SetActorRotation( Rotate );

拡縮

FVector Scale = FVector( 1, 1, 1 ) * (Sin / 2 + 1);
SetActorScale3D( Scale );

ソースコード

FloatPawn.h

#pragma once

#include "GameFramework/Pawn.h"
#include "FloatPawn.generated.h"

UCLASS()
class SETUPENV_API AFloatPawn : public APawn
{
    GENERATED_BODY()

public:
    AFloatPawn();
    virtual void BeginPlay() override;
    virtual void Tick( float DeltaSeconds ) override;
    virtual void SetupPlayerInputComponent(class UInputComponent* InputComponent) override;

private:
    // 経過時間
    float TotalTime;
    
};

FloatPawn.cpp

#include "SetupEnv.h"
#include "FloatPawn.h"

AFloatPawn::AFloatPawn()
{
    PrimaryActorTick.bCanEverTick = true;
}

void AFloatPawn::BeginPlay()
{
    Super::BeginPlay();
}

void AFloatPawn::Tick( float DeltaTime )
{
    Super::Tick( DeltaTime );

    // 経過時間の計算
    TotalTime += DeltaTime;
    float Sin = FMath::Sin( TotalTime );

    // 横移動
    FVector Location = GetActorLocation();
    Location.Y = Sin * 50;
    SetActorLocation( Location );

    // 拡縮
    FVector Scale = FVector( 1, 1, 1 ) * (Sin / 2 + 1);
    SetActorScale3D( Scale );

    // 回転
    FRotator Rotate = GetActorRotation();
    Rotate.Yaw += DeltaTime * 100;
    SetActorRotation( Rotate );
}

void AFloatPawn::SetupPlayerInputComponent( class UInputComponent* InputComponent )
{
    Super::SetupPlayerInputComponent( InputComponent );
}

まとめ

移動、回転、拡縮について見ていきました。
UE4でC++といえども、他のゲームエンジンフレームワークとさほど変わらないと思います。
基本的な処理の実装方法を覚えていくまでがしんどいですが、頑張っていきましょう。