このドキュメントでは、接触時にカラーが変化し、ゆっくりと消えていく Light アクタの設定方法について説明します。
この設定は、オーバーラップ トリガーとして機能する Box コンポーネントと Point Light アクタを操作する Timeline コンポーネントを含む Point Light コンポーネント を使用して行います。
Fading Light アクタを作成する
- ブループリント テンプレートで C++ プロジェクトを新規作成して「FadingLights」と名前を付けます。
-
コンテンツ ブラウザ へ移動して、 [Add (+) (追加)] ボタンをクリックして新しいブループリント アクタ を作成し、「BP_LightActor」と名前を付けます。
-
コンテンツ ブラウザ で BP_LightActor を ダブルクリック して ブループリント エディタ で開き、[Class Defaults (クラスのデフォルト)] を開きます。
-
[Component (コンポーネント)] タブで [Add (+) (追加)] ボタンをクリックし、ドロップダウン メニューの [Box Collision (ボックス コリジョン)] を選択し、名前を 「OverlapCollision」 に変更します。
-
[Components (コンポーネント)] タブで OverlapCollision を選択して DefaultSceneRoot にドラッグし、OverlapCollision を新規ルート コンポーネントにします。
-
[Components (コンポーネント)] タブで、[Add(+) (追加)] をクリックして、Point Light を検索し選択します。
-
イベント グラフ を開いてグラフを右クリックし、ブループリントのコンテキスト メニュー から [Add Timeline (タイムラインを追加する)] を選択します。タイムラインの名前を 「PointLightTimeline」 にします。
-
[My Blueprint (マイ ブループリント)] タブに移動し、[Variables (変数)] カテゴリの [(+)] ボタンをクリックして新しい Float 型の変数を追加します。変数の名前を「BrightnessMultiplier」に変更してブループリントをコンパイルします。[Detail (詳細)] パネルで デフォルト値 を「**」に設定します。
-
[Compile (コンパイル)] と [Save (保存)] ボタンを順にクリックします。
Brightness トラックを設定する
プレイヤーが Light アクタの Box コンポーネントの境界に重なる場合、Timeline コンポーネントでは Point Light コンポーネントの輝度の値を操作するための Float カーブが必要になります。
明るさの初期値は「5000」で、5 秒間で「0」まで減少します。
- PointLightTimeline ノード をダブルクリックして タイムライン エディタ を開き、 [Track] > [Add Float Track] を追加します。
- Float カーブ トラックに「LightBrightnessFloatTrack」という名前を付け、[Shift] ボタンを押しながらクリックして 2 つのキーをトラックに追加します。1 つ目のキーをクリックして時間値を (0, 5000) に、2 つ目のキーをクリックし時間値を (5, 0) に設定してください。
- 出来上がった LightBrightnessFloat トラックが次のように表示されます。
Color トラックを設定する
プレイヤーが Light アクタの Box コンポーネントの境界に重なる場合、PointLight タイムラインでは Point Light コンポーネントのカラー プロパティを操作するための線形カラー カーブ トラックが必要になります。
- タイムライン エディタ からカラー カーブ トラックを追加します。
- 新しいカラー トラックに 「LightLinearColorTrack」 という名前を付けます。
- 最初のカラー キーをダブルクリックして時間を 0 に、RGB の値を (R :1、G: 0.665、B :0.015) に変更します。
- 2 つ目のカラー キーをダブルクリックして時間を 5 に、RGB の値を以下のように変更します(R:0, G:0, B:0)。
-
[Compile (コンパイル)] と [Save (保存)] ボタンを順にクリックします。
-
出来上がったカラー トラックが次のように表示されます。
作成中のブループリント
コリジョン オーバーラップ イベントと更新ロジックを作成する
Box コンポーネントには、アクタがコリジョンの境界を入力する時に TimelineComponent をトリガーする機能が必要です。
また、PointLightTimeline ではその明るさとカラーを変更するための更新ロジックが必要です。
-
ブループリント エディタ にある [Components (コンポーネント)] タブに移動して OverlapCollision コンポーネントを選択します。[Details (詳細)] パネルで [Events (イベント)] カテゴリまでスクロールして、On Component Begin Overlap イベントの隣にある [+] アイコンをクリックします。
-
On Component Begin Overlap(OverlapCollision) ノードの 実行 ピンをドラッグして PointTimelineComponent ノードの Play ピンに接続します。
- [Components (コンポーネント)] タブで PointLight コンポーネントを イベント グラフ にドラッグします。
- PointLight のピンをドラッグし、アクションのメニューに Set Intensity ノードを追加します。
- PointLightTimeline ノードの Light Brightness Float Track ピンをドラッグし、アクションのメニューに Multiply を追加します。
- [My Blueprint (マイ ブループリント)] タブから BrightnessMultiplier の Float 型変数を イベント グラフ にドラッグします。次に Get Brightness Multiplier を選択したら、Multiply ノードに接続します。
-
PointLightTimeline の Update ピンを Set Intensity ノードに接続し、Multiply ノードの Return Value ピンを ntensity の New Intensity 入力ピンに接続します。
-
PointLight ノードをドラッグし、アクションのメニューから Set Light Color を選択します。
-
PointLightTimeline ノードの Light Linear Color Track ピンを Set Light Color ノードの New Light Color ピンに接続します。次に、Set Intensity ノードの 実行 ピンを Set Light Color ノードに接続します。
-
[Compile (コンパイル)] と [Save (保存)] ボタンを順にクリックします。
完成したブループリント
レベル設定
作成したコードの機能を最善の状態で実行するには、レベルからすべての光源アクタを削除する必要があります。
- 次に、コンテンツ ブラウザ の BP_LightActor アセットに移動して、それを選択して レベル にドラッグします。
-
ワールド アウトライナー で BP_LightActor を選択して、[Details] パネルへ移動して [Location] 設定を (0, 0, 300)、[Scale] 設定を (10, 10, 10) に変更します。
-
アウトライナー で DirectionalLight Actor** を選択します。
-
レベルは以下のようになります。
最終結果
これで、Light アクタとレベルを設定できました。Play (PIE) をクリックすると観戦者のポーンの所有権が自動的に得られます。
観戦者のポーンを制御し、Light アクタの Box コンポーネントの境界に移動することができます。
Timeline コンポーネントの Play 関数がトリガーされると、ライトのカラーおよび明るさは 5 秒間で変化していきます。
このドキュメントでは、接触時にカラーが変化し、ゆっくりと消えていく Light アクタの設定方法について説明します。
この設定は、オーバーラップ トリガーとして機能する Box コンポーネントと Point Light アクタを操作する Timeline コンポーネントを含む Point Light コンポーネント を使用して行います。
Fading Light アクタを作成する
- ブランク テンプレートで C++ プロジェクトを新規作成して「FadingLights」と名前を付けます。
- コンテンツ ブラウザ で「C++ Classes」フォルダをクリックし、[+Add (+追加)] ボタンをクリックして [New C++ Class (新規 C++ クラス)] を選択します。
- アクタ を 親クラス として選択します。
- 作成したアクタに「LightActor」という名前を付けます。
- 新しいアクタを作成すると、Visual Studio では自動的に「
LightActor.h
」と「LightActor.cpp
」ファイルが開かれます。LightActor.h
ファイルに移動して次のように宣言します。
LightActor.h
#include "Components/TimelineComponent.h"
- 次に、
LightActor
クラスの定義に次のコードを追加します。
LightActor.h
public:
UPROPERTY(EditAnywhere)
UCurveFloat* PointLightFloatCurve;
UPROPERTY(EditAnywhere)
UCurveLinearColor* PointLightColorCurve;
protected:
//ポイントライト コンポーネントをアニメートするための TimelineComponent です。
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
UTimelineComponent* LightTimelineComp;
//近接オーバーラップボリュームとして使用される BoxComponent です。
UPROPERTY(EditAnywhere, BlueprintReadWrite)
class UBoxComponent* LightOverlapVolume;
UPROPERTY(EditAnywhere,BlueprintReadWrite)
class UPointLightComponent* PointLightComp;
//ポイントライトの明るさに使用されるトラック
FOnTimelineFloat UpdateBrightnessTrack;
//ポイントライトの色に使用されるトラック
FOnTimelineLinearColor UpdateColorTrack;
//UpdateBrightnessTrack を基準にライトの明るさを更新する関数
UFUNCTION()
void UpdateLightBrightness(float BrightnessOutput);
//UpdateColorTrack を基準にライトの色を更新する関数
UFUNCTION()
void UpdateLightColor(FLinearColor ColorOutput);
UPROPERTY(EditDefaultsOnly)
float BrightnessMultiplier;
LightActor.cpp
に移動し、次のクラス ライブラリを追加します。
LightActor.cpp
#include "Components/BoxComponent.h"
#include "Components/PointLightComponent.h"
ALightActor::ALightActor
のコンストラクタで、次のように宣言します。
LightActor.cpp
ALightActor::ALightActor()
{
// フレームごとに Tick() を呼び出すようにこのアクタを設定します。必要ない場合は、パフォーマンス向上のためにこれをオフにすることができます。
PrimaryActorTick.bCanEverTick = true;
//デフォルト コンポーネントを作成します
PointLightComp = CreateDefaultSubobject<UPointLightComponent>(TEXT("PointLightComp"));
LightTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("LightTimelineComp"));
LightOverlapVolume = CreateDefaultSubobject<UBoxComponent>(TEXT("LightOverlapVolume"));
//アタッチメントを設定します
RootComponent = LightOverlapVolume;
PointLightComp->AttachToComponent(LightOverlapVolume, FAttachmentTransformRules::KeepRelativeTransform);
//輝度倍数を初期化します
BrightnessMultiplier = 20.0f;
}
- 次にポイントライト コンポーネントの
UFunction
メソッドを実装します。
LightActor.cpp
void ALightActor::UpdateLightBrightness(float BrightnessOutput)
{
PointLightComp->SetLightBrightness(BrightnessOutput * 20.0f);
}
void ALightActor::UpdateLightColor(FLinearColor ColorOutput)
{
PointLightComp->SetLightColor(ColorOutput);
}
- 次に、
BeginPlay
メソッドに次のコードを追加します。
LightActor.cpp
void ALightActor::BeginPlay()
{
Super::BeginPlay();
//float と color track をそれぞれの関数にバインドします
UpdateBrightnessTrack.BindDynamic(this, &ALightActor::UpdateLightBrightness);
UpdateColorTrack.BindDynamic(this, &ALightActor::UpdateLightColor);
//Float カーブがある場合は、そのグラフを更新関数にバインドします
if (PointLightFloatCurve)
{
LightTimelineComp->AddInterpFloat(PointLightFloatCurve, UpdateBrightnessTrack);
}
//リニア カラー カーブがある場合は、そのグラフを更新関数にバインドします
if (PointLightColorCurve)
{
LightTimelineComp->AddInterpLinearColor(PointLightColorCurve, UpdateColorTrack);
}
}
-
コードをコンパイルします。
-
コンテンツ ブラウザ で、「C++ Classes」フォルダに移動します。
-
LightActor を右クリックして [Create Blueprint Class based on LightActor (LightActor に基づいてブループリント クラスを作成する)] を選択し、Blueprint アクタの名前を「BP_LightActor」にします。
BP_LightActor のクラスのデフォルトが、次のように表示されます。
作成中のコード
LightActor.h
//Copyright 1998-2022 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Components/TimelineComponent.h"
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "LightActor.generated.h"
UCLASS()
class FADINGLIGHTS_API ALightActor : public AActor
{
GENERATED_BODY()
public:
// このアクタのプロパティのデフォルト値を設定します。
ALightActor();
protected:
// ゲームの開始時またはスポーン時に呼び出します。
virtual void BeginPlay() override;
public:
// フレームごとに呼び出します。
virtual void Tick(float DeltaTime) override;
public:
UPROPERTY(EditAnywhere)
UCurveFloat* PointLightFloatCurve;
UPROPERTY(EditAnywhere)
UCurveLinearColor* PointLightColorCurve;
protected:
//ポイントライト コンポーネントをアニメートするための TimelineComponent です。
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
UTimelineComponent* LightTimelineComp;
//近接オーバーラップボリュームとして使用される BoxComponent です。
UPROPERTY(EditAnywhere, BlueprintReadWrite)
class UBoxComponent* LightOverlapVolume;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
class UPointLightComponent* PointLightComp;
//ポイントライトの明るさに使用されるトラック
FOnTimelineFloat UpdateBrightnessTrack;
//ポイントライトの色に使用されるトラック
FOnTimelineLinearColor UpdateColorTrack;
//UpdateBrightnessTrack を基準にライトの明るさを更新する関数
UFUNCTION()
void UpdateLightBrightness(float BrightnessOutput);
//UpdateColorTrack を基準にライトの色を更新する関数
UFUNCTION()
void UpdateLightColor(FLinearColor ColorOutput);
UPROPERTY(EditDefaultsOnly)
float BrightnessMultiplier;
};
LightActor.cpp
//Copyright 1998-2022 Epic Games, Inc. All Rights Reserved.
#include "LightActor.h"
#include "Components/BoxComponent.h"
#include "Components/PointLightComponent.h"
// デフォルト値を設定します。
ALightActor::ALightActor()
{
// フレームごとに Tick() を呼び出すようにこのアクタを設定します。必要ない場合は、パフォーマンス向上のためにこれをオフにすることができます。
PrimaryActorTick.bCanEverTick = true;
//デフォルト コンポーネントを作成します
PointLightComp = CreateDefaultSubobject<UPointLightComponent>(TEXT("PointLightComp"));
LightTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("LightTimelineComp"));
LightOverlapVolume = CreateDefaultSubobject<UBoxComponent>(TEXT("LightOverlapVolume"));
//アタッチメントを設定します
RootComponent = LightOverlapVolume;
PointLightComp->AttachToComponent(LightOverlapVolume, FAttachmentTransformRules::KeepRelativeTransform);
//輝度倍数を初期化します
BrightnessMultiplier = 20.0f;
}
// ゲームの開始時またはスポーン時に呼び出します。
void ALightActor::BeginPlay()
{
Super::BeginPlay();
//float と color track をそれぞれの関数にバインドします
UpdateBrightnessTrack.BindDynamic(this, &ALightActor::UpdateLightBrightness);
UpdateColorTrack.BindDynamic(this, &ALightActor::UpdateLightColor);
//Float カーブがある場合は、そのグラフを更新関数にバインドします
if (PointLightFloatCurve)
{
LightTimelineComp->AddInterpFloat(PointLightFloatCurve, UpdateBrightnessTrack);
}
//リニア カラー カーブがある場合は、そのグラフを更新関数にバインドします
if (PointLightColorCurve)
{
LightTimelineComp->AddInterpLinearColor(PointLightColorCurve, UpdateColorTrack);
}
}
// フレームごとに呼び出します。
void ALightActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void ALightActor::UpdateLightBrightness(float BrightnessOutput)
{
PointLightComp->SetLightBrightness(BrightnessOutput * 20.0f);
}
void ALightActor::UpdateLightColor(FLinearColor ColorOutput)
{
PointLightComp->SetLightColor(ColorOutput);
}
コリジョン オーバーラップ イベントを作成してバインディングする
Box コンポーネントには、アクタがコリジョンの境界を入力するときに TimelineComponent をトリガーする機能が必要です。
LightActor.h
ファイルのクラス定義に移動し、BrightnessMultiplier
の下で次のように宣言します。
LightActor.h
protected:
UFUNCTION()
void OnOverlapBegin(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
- 次に、
LightActor.cpp
ファイルに移動してOnOverlapBegin
関数を実装します。
LightActor.cpp
void ALightActor::OnOverlapBegin(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
LightTimelineComp->Play();
}
BeginPlay
メソッドで Overlap 関数をバインドします。
LightActor.cpp
//Box コンポーネントを Light アクタの Overlap 関数にバインドします
LightOverlapVolume->OnComponentBeginOverlap.AddDynamic(this, &ALightActor::OnOverlapBegin);
- コードをコンパイルします。
完成コード
LightActor.h
//Copyright 1998-2022 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Components/TimelineComponent.h"
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "LightActor.generated.h"
UCLASS()
class FADINGLIGHTS_API ALightActor : public AActor
{
GENERATED_BODY()
public:
// このアクタのプロパティのデフォルト値を設定します。
ALightActor();
protected:
// ゲームの開始時またはスポーン時に呼び出します。
virtual void BeginPlay() override;
public:
// フレームごとに呼び出します。
virtual void Tick(float DeltaTime) override;
public:
UPROPERTY(EditAnywhere)
UCurveFloat* PointLightFloatCurve;
UPROPERTY(EditAnywhere)
UCurveLinearColor* PointLightColorCurve;
protected:
//ポイントライト コンポーネントをアニメートするための TimelineComponent です。
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
UTimelineComponent* LightTimelineComp;
//近接オーバーラップボリュームとして使用される BoxComponent です。
UPROPERTY(EditAnywhere, BlueprintReadWrite)
class UBoxComponent* LightOverlapVolume;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
class UPointLightComponent* PointLightComp;
//ポイントライトの明るさに使用されるトラック
FOnTimelineFloat UpdateBrightnessTrack;
//ポイントライトの色に使用されるトラック
FOnTimelineLinearColor UpdateColorTrack;
//UpdateBrightnessTrack を基準にライトの明るさを更新する関数
UFUNCTION()
void UpdateLightBrightness(float BrightnessOutput);
//UpdateColorTrack を基準にライトの色を更新する関数
UFUNCTION()
void UpdateLightColor(FLinearColor ColorOutput);
UPROPERTY(EditDefaultsOnly)
float BrightnessMultiplier;
protected:
UFUNCTION()
void OnOverlapBegin(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
};
LightActor.cpp
//Copyright 1998-2022 Epic Games, Inc. All Rights Reserved.
// プロジェクト設定の説明ページの著作権表示を入力します。
#include "LightActor.h"
#include "Components/BoxComponent.h"
#include "Components/PointLightComponent.h"
// デフォルト値を設定します。
ALightActor::ALightActor()
{
// フレームごとに Tick() を呼び出すようにこのアクタを設定します。必要ない場合は、パフォーマンス向上のためにこれをオフにすることができます。
PrimaryActorTick.bCanEverTick = true;
//デフォルト コンポーネントを作成します
PointLightComp = CreateDefaultSubobject<UPointLightComponent>(TEXT("PointLightComp"));
LightTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("LightTimelineComp"));
LightOverlapVolume = CreateDefaultSubobject<UBoxComponent>(TEXT("LightOverlapVolume"));
//アタッチメントを設定します
RootComponent = LightOverlapVolume;
PointLightComp->AttachToComponent(LightOverlapVolume, FAttachmentTransformRules::KeepRelativeTransform);
//輝度倍数を初期化します
BrightnessMultiplier = 20.0f;
}
// ゲームの開始時またはスポーン時に呼び出します。
void ALightActor::BeginPlay()
{
Super::BeginPlay();
//float と color track をそれぞれの関数にバインドします
UpdateBrightnessTrack.BindDynamic(this, &ALightActor::UpdateLightBrightness);
UpdateColorTrack.BindDynamic(this, &ALightActor::UpdateLightColor);
//Float カーブがある場合は、そのグラフを更新関数にバインドします
if (PointLightFloatCurve)
{
LightTimelineComp->AddInterpFloat(PointLightFloatCurve, UpdateBrightnessTrack);
}
//リニア カラー カーブがある場合は、そのグラフを更新関数にバインドします
if (PointLightColorCurve)
{
LightTimelineComp->AddInterpLinearColor(PointLightColorCurve, UpdateColorTrack);
}
//Box コンポーネントを Light アクタの Overlap 関数にバインドします
LightOverlapVolume->OnComponentBeginOverlap.AddDynamic(this, &ALightActor::OnOverlapBegin);
}
// フレームごとに呼び出します。
void ALightActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void ALightActor::UpdateLightBrightness(float BrightnessOutput)
{
PointLightComp->SetLightBrightness(BrightnessOutput * 20.0f);
}
void ALightActor::UpdateLightColor(FLinearColor ColorOutput)
{
PointLightComp->SetLightColor(ColorOutput);
}
void ALightActor::OnOverlapBegin(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
LightTimelineComp->Play();
}
Brightness トラックを設定する
プレイヤーが Light アクタの Box コンポーネントの境界に重なる場合、Timeline コンポーネントでは Point Light コンポーネントの輝度の値を操作するための Float カーブが必要になります。
明るさの初期値は「5000」で、5 秒間で「0」まで減少します。
-
コンテンツ ブラウザ に移動し、[+Add] > [Miscellaneous (その他)] > [Curve (カーブ)] を選択します。
-
[CurveFloat] を選択してアセットの名前を「BrightnessCurveFloat」にします。
-
[BrightnessCurveFloat] をダブルクリックして タイムライン エディタ を開きます。
-
グラフ をクリックして [Add Key (キーを追加)] を選択して、2 つのキーを Float カーブに追加します。1 つめのキーの時間値を (0, 5000) に調節します。2 つめのキーの時間値を (5, 0) に調節します。BrightnessCurveFloat は以下のようになります。
-
[BrightnessCurveFloat] を保存してから コンテンツ ブラウザ に戻り、[BP_LightActor] をダブルクリックして [Class Defaults (クラスのデフォルト)] を開きます。
-
[Details] パネルに移動し、[Point Light Float Curve] のドロップダウン メニューから [Brightness Curve Float] を選択します。
-
[Compile (コンパイル)] ボタンと [Save (保存)] ボタンを順にクリックします。
カラー トラックを設定する
プレイヤーが Light アクタの Box コンポーネントの境界に重なる場合、PointLight タイムラインでは Point Light コンポーネントのカラー プロパティを操作するための線形カラー カーブ トラックが必要になります。
-
コンテンツ ブラウザ に移動し、[+Add] > [Miscellaneous (その他)] > [Curve (カーブ)] を選択します。
-
[CurveLinearColor] を選択してアセットの名前を 「LinearColorCurve」 にします。
-
[LinearColorCurve] をダブルクリックして タイムライン エディタ を開きます。
-
最初のカラー キーをダブルクリックして、RGB の値を (R:1, G:0.665, B:0.015) に変更します。
- 2 つめのカラー キーをダブルクリックして、RGB の値を (R:0, G:0, B:0) に変更します。
- グラフ で 2 つめの 点 を選択して時間を 5 秒に設定します。
- LinearColorCurve は以下のようになります。
-
[LinearColorCurve] を保存してからコンテンツ ブラウザに戻り、[BP_LightActor] をダブルクリックして [Class Defaults] を開きます。
-
[Details] パネルに移動し、[Point Light Float Curve] のドロップダウン メニューから [Brightness Curve Float] を選択します。
-
[Compile (コンパイル)] ボタンと [Save (保存)] ボタンを順にクリックします。
レベル設定
作成したコードの機能を最善の状態で実行するには、レベルからすべての光源アクタを削除する必要があります。
- コンテンツ ブラウザ で BP_LightActor アセットに移動して、それを選択して レベル にドラッグします。
-
[World Outliner (アウトライナ)] で BP_LightActor を選択して、[Details] パネルへ移動して [Location] 設定を (0, 0, 300)、[Scale] 設定を (10, 10, 10) に変更します。
-
[World Outliner] で DirectionalLight アクタ を選択します。
-
レベルは以下のようになります。
最終結果
これで、Light アクタとレベルを設定できました。Play (PIE) をクリックすると観戦者のポーンの所有権が自動的に得られます。
観戦者のポーンを制御し、Light アクタの Box コンポーネントの境界に移動することができます。
Timeline コンポーネントの Play 関数がトリガーされると、ライトのカラーおよび明るさは 5 秒間で変化していきます。