LoginSignup
3
2

More than 5 years have passed since last update.

UE4 でアクターを定義してみる

Last updated at Posted at 2015-12-23

環境

UE 4.10.0
Visual Studio 2015

概要

Unreal Engine 4 を触ってみて動作を確認する
まずはチュートリアルに習い、アクターで動くものを作ってみる

本文

プロジェクト作成

[新規プロジェクト] -> [C++] を選択
プロジェクト名を ActorTest とし、プロジェクトを作成

クラス追加

[ファイル] -> [C++クラスを追加]
親クラスに「アクター」を選択し、ファイル名を Actor1 としてクラスを作成
こうすると新規 C++ コードが追加され、ついでにコンパイルされる

コンテンツブラウザを確認

コンテンツブラウザに先ほど追加した Actor1 クラスが追加されている
Actor1 をビューポートにドラッグ&ドロップするとアウトライナーに Actor12 という
名前でオブジェクトが追加されている

コンポーネントを追加してみる

エディタの [ウィンドウ] -> [詳細] -> [詳細1] で詳細ウィンドウを開いておく
Actor12 オブジェクトをクリックすると詳細ウィンドウに Actor12 オブジェクトの詳細
が表示される。
[コンポーネントを追加] ボタンで、基本形状の球を選択
これで、ビューポート上で球体を動かす準備ができた

コンパイルしてみる

エディタに [コンパイル] ボタンがあるので、それで実行できる
もしくは Visual Studio でいつも通りビルドすればエディタに反映される

実行してみる

エディタに [プレイ] ボタンがあるので、それで実行できる
現状で実行すると球が半分地面に埋まった画面が見えるはず

追加されたコード

追加されたコードを確認してみる。
以下のコードのテンプレートが出来ているはず

[Actor.h]
#include "GameFramework/Actor.h"
#include "Actor1.generated.h"
UCLASS()
class ACTORTEST_API AActor1 : public AActor
{
GENERATED_BODY()
public:
AActor1();

virtual void BeginPlay() override;

virtual void Tick( float DeltaSeconds ) override;

};

[Actor.cpp]
#include "ActorTest.h"
#include "Actor1.h"

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

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

void AActor1::Tick( float DeltaTime )
{
Super::Tick( DeltaTime );
}

コードの中を検証して修正してみる

いくつか謎のマクロが定義されているが、それ以外は普通のクラス
コンストラクタ、BeginPlay、Tick メソッドが実装されている

たぶん BeginPlay が、実行前にコールされる初期化メソッドで Tick が毎フレームの
更新処理なんだろう。BeginPlay に座標を設定すれば地面に埋まった球体を地面の上に
表示できるはず

BeginPlay 修正

座標を設定しなおすと、意図通りの挙動になった
高さを修正するのにベクトルの Z を変更する必要があるらしい
( デフォルトでは Y UP ではなく、Z UP らしい )
この辺りは設定を変更できないだろうか?
まぁ、数学の計算はライブラリのものを使用するだろうから別に問題ないが
void AActor1::BeginPlay()
{
Super::BeginPlay();

FVector pos = GetActorLocation();
pos.Z = 100.0f;
SetActorLocation(pos);

}

Tick 修正

徐々に球体が浮かぶようにコードを修正してみる
void AActor1::Tick( float DeltaTime )
{
Super::Tick( DeltaTime );

FVector pos = GetActorLocation();
pos.Z += 0.05f;
SetActorLocation(pos);

}

まとめ

これで UE4 でオブジェクトを動かす下準備が整ったので、色々動かしてみようと思う

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2