明滅ライト

色も変化する明滅するライトを設定したタイムラインの使用例。

Choose your operating system:

Windows

macOS

Linux

実装方法を選んでください。

Blueprints

C++

このドキュメントでは、接触時にカラーが変化し、ゆっくりと消えていく Light アクタの設定方法について説明します。

この設定は、オーバーラップ トリガーとして機能する Box コンポーネントと Point Light アクタを操作する Timeline コンポーネントを含む Point Light コンポーネント を使用して行います。

image alt text

Fading Light アクタを作成する

  1. まずは [New (新規)] > [Games (ゲーム)] > [Blank (空白)] > [Blueprint (ブループリント)] と移動し、「FadingLights」 という名前のプロジェクトを作成します。

    image alt text

  2. [Add/Import (追加 / インポート)] ボタンをクリックして新規ブループリントの Actor クラスを 「BP_LightActor」 という名前で作成します。

  3. コンテンツ ブラウザで BP_LightActor をダブルクリックしてブループリント エディタで開き、[Class Defaults (クラスのデフォルト)] を開きます。 image alt text

  4. [Add Component (コンポーネントを追加)] をクリックしてドロップダウン メニューの [Box Collision (ボックス コリジョン)] を選択し、名前を 「OverlapCollision」 に変更します。

    image alt text

  5. [Components (コンポーネント)] タブでオーバーラップ コリジョンを選択して [DefaultSceneRoot] にドラッグし、OverlapCollision を新規ルート コンポーネントにします。

    image alt text

  6. [Add Component (コンポーネントを追加)] をクリックし、「Point Light」 を検索して選択します。

    image alt text

  7. イベント グラフ を開いてグラフを右クリックし、ブループリントのコンテキスト メニュー から [Add Timeline (タイムラインを追加する)] を選択します。タイムラインの名前を 「PointLightTimeline」 にします。

    image alt text

  8. [My Blueprint (マイ ブループリント)] タブに移動し、[Variables (変数)] カテゴリの [+ Variable] ボタンをクリックして新しい Float 型の変数を追加します。この変数の名前を 「BrightnessMultiplier」 にしてコンパイルし、[Default Value (デフォルト値)]「20.0」 に設定します。

    image alt text

  9. コンパイル して 保存 します。

Brightness トラックを設定する

プレイヤーが Light アクタの Box コンポーネントの境界に重なる場合、Timeline コンポーネントでは Point Light コンポーネントの輝度の値を操作するための Float カーブが必要になります。

明るさの初期値は「5,000」で、5 秒間で「0」まで減少します。

  1. PointLightTimeline ノード をダブルクリックしてタイムライン エディタを開き、Float カーブ トラックを追加します。

    image alt text

  2. Float カーブ トラックに 「LightBrightnessFloatTrack」 という名前を付け、Shift ボタンを押しながらクリックして 2 つのキーをトラックに追加します。1 つのキーに時間の値「(0,5000)」を、もう 1 つ のキーに時間の値「(5,0)」を割り当てます。

    image alt text

  3. 出来上がった LightBrightnessFloat トラックが次のように表示されます。

    image alt text

Color トラックを設定する

プレイヤーが Light アクタの Box コンポーネントの境界に重なる場合、PointLight タイムラインでは Point Light コンポーネントのカラー プロパティを操作するための線形カラー カーブ トラックが必要になります。

  1. タイムライン エディタ からカラー カーブ トラックを追加します。 image alt text

  2. 新しいカラー トラックに 「LightLinearColorTrack」 という名前を付けます。

    image alt text

  3. 最初のカラー キーをダブルクリックして時間を 0 に、RGB の値を (R :1、G: 0.665、B :0.015) に変更します。

    image alt text

  4. 次のカラー キーの時間を 5 に、RGB の値を(R :0、G :0、B :0) に変更します。

    image alt text

  5. ブループリントを コンパイル して、保存 します。

  6. 出来上がったカラー トラックが次のように表示されます。

    image alt text

作成中のブループリント

image alt text

コリジョン オーバーラップ イベントと更新ロジックを作成する

Box コンポーネントには、アクタがコリジョンの境界を入力する時に TimelineComponent をトリガーする機能が必要です。

また、PointLightTimeline ではその明るさとカラーを変更するための更新ロジックが必要です。

  1. BP_LightActor のブループリント エディタにある [Components (コンポーネント)] タブに移動して OverlapCollision Box コンポーネントを選択します。[Details (詳細)] パネルで [Events (イベント)] カテゴリまでスクロールして、On Component Begin Overlap イベントの隣にある [+] アイコンをクリックします。

    image alt text

  2. On Component Begin Overlap(OverlapCollision) ノードをドラッグして PointTimelineComponent ノードの Play ピンに接続します。

    image alt text

  3. [Components (コンポーネント)] タブで PointLight コンポーネントを選択して イベント グラフ にドラッグします。

    image alt text

  4. PointLight のピンをドラッグし、アクションのメニュー検索から Set Intensity を選択します。

    image alt text

  5. PointLightTimeline ノードの Light Brightness Float Track ピンをドラッグし、アクションのメニュー検索から float * float を選択します。

    image alt text

  6. [My Blueprint (マイ ブループリント)] タブから BrightnessMultiplier の Float 型変数をイベント グラフにドラッグします。次に Get Brightness Multiplier を選択したら、float * float ノードに接続します。

    image alt text

  7. Update Execution ピンを Set Intensity ノードに接続し、次に float * float ノードの結果を New Intensity の入力ピンに接続します。

    image alt text

  8. PointLight ノードをドラッグし、アクションのメニュー検索から Set Light Color を選択します。

    image alt text

  9. PointLightTimeline ノードの Light Linear Color Track ピンをドラッグして、Set Light Color ノードの New Light Color ピンに接続します。次に、 Set Intensity ノードの 実行ピンSet Light Color ノードに接続します。

    image alt text

  10. コンパイル して 保存 します。

完成したブループリント

image alt text

レベル設定

作成したコードの機能を最善の状態で実行するには、レベルからすべての光源を削除する必要があります。

  1. まず、レベルに BP_LightActor のインスタンスを配置します。

    image alt text

  2. アウトライナー に移動して Atmospheric Fog アクタを選択します。[Details] パネルから [Sun] カテゴリに移動し、[Default Brightness] の値を 「0」** に設定します。

    image alt text

  3. ワールド アウトライナーから Sky Sphere アクタを削除します。

    image alt text

  4. また、ワールド アウトライナーの Light Source アクタ も削除します。
    image alt text

  5. ツールバー に移動し、[Build (ビルド)] を選択してレベルのライティングを再ビルドします。

    image alt text

  6. ライティングのビルドが完了すると、レベルは次の画像のようになります。

    image alt text

最終結果

これで、Light アクタとレベルを設定できました。[PIE] をクリックすると観戦者のポーンの所有権が自動的に得られます。

観戦者のポーンを制御し、Light アクタの Box コンポーネントの境界に移動することができます。

Timeline コンポーネントの Play 関数がトリガーされると、ライトのカラーおよび明るさは 5 秒間で変化していきます。

image alt text

このドキュメントでは、接触時にカラーが変化し、ゆっくりと消えていく Light アクタの設定方法について説明します。

この設定は、オーバーラップ トリガーとして機能する Box コンポーネントと Point Light アクタを操作する Timeline コンポーネントを含む Point Light コンポーネント を使用して行います。

image alt text

Fading Light アクタを作成する

  1. まずは [New (新規)] > [Games (ゲーム)] > [Blank (空白)] > [C++] と移動し、「FadingLights」 という名前のプロジェクトを作成します。

    image alt text

  2. C++ Class WizardLightActor という名前の Actor クラスを新規作成します。

  3. LightActor.h ファイルに移動して次のように宣言します。

    #include "Components/TimelineComponent.h"
  4. 次に、 LightActor クラスの定義に次のコードを追加します。

    public:
    
            UPROPERTY(EditAnywhere)
            UCurveFloat* PointLightFloatCurve;
    
            UPROPERTY(EditAnywhere)
            UCurveLinearColor* PointLightColorCurve;
    
    protected: 
    
            //TimelineComponent to animate the point light component.
            UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
            UTimelineComponent* LightTimelineComp;
    
            //BoxComponent which will be used as our proximity overlap volume.
            UPROPERTY(EditAnywhere, BlueprintReadWrite)
            class UBoxComponent* LightOverlapVolume;
    
            UPROPERTY(EditAnywhere,BlueprintReadWrite)
            class UPointLightComponent*  PointLightComp;
    
            //Track used for Pointlight brightness
            FOnTimelineFloat UpdateBrightnessTrack;
    
            //Track used for Pointlight color
            FOnTimelineLinearColor UpdateColorTrack;
    
            //Function to Update Light's brightness relative to UpdateBrightnessTrack
            UFUNCTION()
            void UpdateLightBrightness(float BrightnessOutput);
    
            //Function to Update Light's color relative to UpdateColorTrack
            UFUNCTION()
            void UpdateLightColor(FLinearColor ColorOutput);
    
            UPROPERTY(EditDefaultsOnly)
            float BrightnessMultiplier;
  5. LightActor.cpp に移動し、次のクラス ライブラリを追加します。

    #include "Components/BoxComponent.h"
    #include "Components/PointLightComponent.h"
  6. ALightActor::ALightActor のコンストラクタで、次のように宣言します。

    //Create our Default Components
    PointLightComp = CreateDefaultSubobject<UPointLightComponent>(TEXT("PointLightComp"));
    LightTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("LightTimelineComp"));
    LightOverlapVolume = CreateDefaultSubobject<UBoxComponent>(TEXT("LightOverlapVolume"));
    
    //Setup our Attachments
    RootComponent = LightOverlapVolume;
    PointLightComp->AttachToComponent(LightOverlapVolume,FAttachmentTransformRules::KeepRelativeTransform);
    
    //Initialize Brightness Multiplier
    BrightnessMultiplier = 20.0f;
  7. 次に、Point Light コンポーネントの UFunction メソッドを実装します。

    void ALightActor::UpdateLightBrightness(float BrightnessOutput)
    {
        PointLightComp->SetLightBrightness(BrightnessOutput * 20.0f);
    }
    
    void ALightActor::UpdateLightColor(FLinearColor ColorOutput)
    {
        PointLightComp->SetLightColor(ColorOutput);
    }
  8. BeginPlay メソッドで以下のコードを追加します。

        //Binding our float and color track to their respective functions
        UpdateBrightnessTrack.BindDynamic(this, &ALightActor::UpdateLightBrightness);
        UpdateColorTrack.BindDynamic(this, &ALightActor::UpdateLightColor);
    
        //If we have a float curve, bind it's graph to our update function
        if (PointLightFloatCurve)
        {
           LightTimelineComp->AddInterpFloat(PointLightFloatCurve, UpdateBrightnessTrack);
        }
    
        //If we have a linear color curve, bind it's graph to our update function
         if (PointLightColorCurve)
        {
           LightTimelineComp->AddInterpLinearColor(PointLightColorCurve, UpdateColorTrack);
        }
  9. コードをコンパイルします。

  10. コンテンツ ブラウザで 「C++ Classes」フォルダ に移動します。

  11. LightActor クラスを右クリックして [Create Blueprint Class based on LightActor (LightActor に基づいてブループリント クラスを作成する)] を選択し、Blueprint アクタの名前を 「BP_LightActor」 にします。

    image alt text

BP_LightActor のクラスのデフォルトが、次のように表示されます。

image alt text

Work-In-Progress Code

LightActor.h

//Copyright 1998-2021 Epic Games, Inc.All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Components/TimelineComponent.h"
#include "LightActor.generated.h"

UCLASS()
class FADINGLIGHTS_API ALightActor : public AActor
{

GENERATED_BODY()

public:
    // Sets default values for this actor's properties
    ALightActor();

    UPROPERTY(EditAnywhere)
    UCurveFloat* PointLightFloatCurve;

    UPROPERTY(EditAnywhere)
    UCurveLinearColor* PointLightColorCurve;

protected: 
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

    //TimelineComponent to animate the point light component.
    UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
    UTimelineComponent* LightTimelineComp;

    //BoxComponent which will be used as our proximity overlap volume.
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    class UBoxComponent* LightOverlapVolume;

UPROPERTY(EditAnywhere,BlueprintReadWrite)
    class UPointLightComponent*  PointLightComp;

    //Track used for Pointlight brightness
    FOnTimelineFloat UpdateBrightnessTrack;

    //Track used for Pointlight color
    FOnTimelineLinearColor UpdateColorTrack;

    //Function to Update Light's brightness relative to UpdateBrightnessTrack

UFUNCTION()
    void UpdateLightBrightness(float BrightnessOutput);

    //Function to Update Light's color relative to UpdateColorTrack
    UFUNCTION()
    void UpdateLightColor(FLinearColor ColorOutput);

    UPROPERTY(EditDefaultsOnly)
    float BrightnessMultiplier;

    public:
        // Called every frame
        virtual void Tick(float DeltaTime) override;

    }

LightActor.cpp

    //Copyright 1998-2021 Epic Games, Inc.All Rights Reserved.

    #include "LightActor.h"
    #include "Components/PointLightComponent.h"
    #include "Components/BoxComponent.h"

    // Sets default values
    ALightActor::ALightActor()
    {
        // Set this actor to call Tick() every frame.必要のない場合はオフにできます。パフォーマンスが改善します。
        PrimaryActorTick.bCanEverTick = true;

        //Create our Default Components
    PointLightComp = CreateDefaultSubobject<UPointLightComponent>(TEXT("PointLightComp"));
         LightTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("LightTimelineComp"));
         LightOverlapVolume= CreateDefaultSubobject<UBoxComponent>(TEXT("LightOverlapVolume"));

    //Setup our Attachments
        RootComponent = LightOverlapVolume;
        PointLightComp->AttachToComponent(LightOverlapVolume,FAttachmentTransformRules::KeepRelativeTransform);}

    // Called when the game starts or when spawned
    void ALightActor::BeginPlay()
    {

    //Binding our float and color track to their respective functions
    UpdateBrightnessTrack.BindDynamic(this, &ALightActor::UpdateLightBrightness);
    UpdateColorTrack.BindDynamic(this, &ALightActor::UpdateLightColor);

        //If we have a float curve, bind it's graph to our update function
        if (PointLightFloatCurve)
        {
          LightTimelineComp->AddInterpFloat(PointLightFloatCurve, UpdateBrightnessTrack);
        }
        //If we have a linear color curve, bind it's graph to our update function
    if (PointLightColorCurve)
        {
           LightTimelineComp->AddInterpLinearColor(PointLightColorCurve, UpdateColorTrack);
        }
    }

    void ALightActor::UpdateLightBrightness(float BrightnessOutput)
    {
        PointLightComp->SetLightBrightness(BrightnessOutput * 20.0f);
    }

    void ALightActor::UpdateLightColor(FLinearColor ColorOutput)
    {
        PointLightComp->SetLightColor(ColorOutput);
    }

    // Called every frame
    void ALightActor::Tick(float DeltaTime)
    {
        Super::Tick(DeltaTime);
    }

コリジョン オーバーラップ イベントを作成してバインディングする

Box コンポーネントには、アクタがコリジョンの境界を入力する時に TimelineComponent をトリガーする機能が必要です。

  1. LightActor.h ファイルのクラス定義に移動し、 BrightnessMultiplier の下で次のように宣言します。

    UFUNCTION()
    void OnOverlapBegin(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
  2. 次に、 LightActor.cpp ファイルに移動して OnOverlapBegin 関数を実装します。

    void ALightActor::OnOverlapBegin(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
    {
        LightTimelineComp->Play();
    }
  3. BeginPlay メソッドで Overlap 関数をバインドします。

    //Binding our Box Component to our Light Actor's Overlap Function
    LightProxVolume->OnComponentBeginOverlap.AddDynamic(this, &ALightActor::OnOverlapBegin);
  4. コードをコンパイルします。

完成コード

LightActor.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Components/TimelineComponent.h"
#include "LightActor.generated.h"

UCLASS()
class FADINGLIGHTS_API ALightActor : public AActor
{
    GENERATED_BODY()

public: 
    // Sets default values for this actor's properties
    ALightActor();

protected:
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

public:

    UPROPERTY(EditAnywhere)
        UCurveFloat* PointLightFloatCurve;

    UPROPERTY(EditAnywhere)
        UCurveLinearColor* PointLightColorCurve;

protected:
    //TimelineComponent to animate the point light component.
    UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
        UTimelineComponent* LightTimelineComp;

    //BoxComponent which will be used as our proximity overlap volume.
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
        class UBoxComponent* LightOverlapVolume;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
        class UPointLightComponent* PointLightComp;

    //Track used for Pointlight brightness
    FOnTimelineFloat UpdateBrightnessTrack;

    //Track used for Pointlight color
    FOnTimelineLinearColor UpdateColorTrack;

    //Function to Update Light's brightness relative to UpdateBrightnessTrack
    UFUNCTION()
        void UpdateLightBrightness(float BrightnessOutput);

    //Function to Update Light's color relative to UpdateColorTrack
    UFUNCTION()
        void UpdateLightColor(FLinearColor ColorOutput);

    UPROPERTY(EditDefaultsOnly)
        float BrightnessMultiplier;

    UFUNCTION()
        void OnOverlapBegin(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);

    public:
        // Called every frame
        virtual void Tick(float DeltaTime) override;

};

LightActor.cpp

// Fill out your copyright notice in the Description page of Project Settings.
#include "LightActor.h"
#include "Components/BoxComponent.h"
#include "Components/PointLightComponent.h"

// Sets default values
ALightActor::ALightActor()
{
    // Set this actor to call Tick() every frame.必要のない場合はオフにできます。パフォーマンスが改善します。
    PrimaryActorTick.bCanEverTick = true;

    //Create our Default Components
    PointLightComp = CreateDefaultSubobject<UPointLightComponent>(TEXT("PointLightComp"));
    LightTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("LightTimelineComp"));
    LightOverlapVolume = CreateDefaultSubobject<UBoxComponent>(TEXT("LightOverlapVolume"));

    //Setup our Attachments
    RootComponent = LightOverlapVolume;
    PointLightComp->AttachToComponent(LightOverlapVolume, FAttachmentTransformRules::KeepRelativeTransform);

    //Initialize Brightness Multiplier
    BrightnessMultiplier = 20.0f;
}

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();
}

// Called when the game starts or when spawned
void ALightActor::BeginPlay()
{
    Super::BeginPlay();

    //Binding our float and color track to their respective functions
    UpdateBrightnessTrack.BindDynamic(this, &ALightActor::UpdateLightBrightness);
    UpdateColorTrack.BindDynamic(this, &ALightActor::UpdateLightColor);

    //If we have a float curve, bind it's graph to our update function
    if (PointLightFloatCurve)
    {
        LightTimelineComp->AddInterpFloat(PointLightFloatCurve, UpdateBrightnessTrack);
    }

    //If we have a linear color curve, bind it's graph to our update function

    if (PointLightColorCurve)
    {
        LightTimelineComp->AddInterpLinearColor(PointLightColorCurve, UpdateColorTrack);
    }

    //Binding our Box Component to our Light Actor's Overlap Function
    LightOverlapVolume->OnComponentBeginOverlap.AddDynamic(this, &ALightActor::OnOverlapBegin);

    } 
    // Called every frame
    void ALightActor::Tick(float DeltaTime)
    {
        Super::Tick(DeltaTime);

    }

Brightness トラックを設定する

プレイヤーが Light アクタの Box コンポーネントの境界に重なる場合、Timeline コンポーネントでは Point Light コンポーネントの輝度の値を操作するための Float カーブが必要になります。

明るさの初期値は「5,000」で、5 秒間で「0」まで減少します。

  1. コンテンツ ブラウザ から、[Add/Import]> [Miscellaneous] > [Curve] の順に選択します。 image alt text

  2. [CurveFloat] を選択してアセットの名前を 「BrightnessCurveFloat」 にします。

  1. [BrightnessCurveFloat] をダブルクリックして タイムライン エディタ を開きます。

  2. 2 つのキーを Float カーブに追加し、1 つのキーに時間の値「(0,5000)」を、もう 1 つ のキーに時間の値「(5,0)」を割り当てます。

    image alt text

  3. BrightnessCurveFloat を保存してから コンテンツ ブラウザ に戻り、[BP_LightActor] をダブルクリックして [Class Defaults (クラスのデフォルト)] を開きます。

  4. [Details (詳細)] パネルに移動し、[Point Light Float Curve (ポイント ライトの Float カーブ)] のドロップダウン メニューから [Brightness Curve Float (輝度のカーブの Float)] を選択します。

    image alt text

  5. コンパイル して 保存 します。

Color トラックを設定する

プレイヤーが Light アクタの Box コンポーネントの境界に重なる場合、PointLight タイムラインでは Point Light コンポーネントのカラー プロパティを操作するための線形カラー カーブ トラックが必要になります。

  1. コンテンツ ブラウザ から、[Add/Import]> [Miscellaneous] > [Curve] の順に選択します。

    image alt text

  2. [CurveLinearColor] を選択してアセットの名前を 「LinearColorCurve」 にします。

  3. [LinearColorCurve] をダブルクリックして タイムライン エディタ を開きます。

  4. 最初のカラー キーの時間の値を「0」に、RGB の値を「(R:1,G:0.665,B:0.015)」に変更します。また、2 つ目のカラー キーの時間を「5」に、RGB の値を「(R:0,G:0,B:0)」に変更します。

    image alt text

  5. [LinearColorCurve] を保存してからコンテンツ ブラウザに戻り、 BP_LightActor をダブルクリックして [Class Defaults] を開きます。

  6. [Details] パネルに移動し、[Point Light Float Curve] のドロップダウン メニューから [Brightness Curve Float] を選択します。

    image alt text

  7. コンパイル して 保存 します。

レベル設定

作成したコードの機能を最善の状態で実行するには、レベルからすべての光源を削除する必要があります。

  1. まず、レベルに BP_LightActor のインスタンスを配置します。

    image alt text

  2. アウトライナー に移動して Atmospheric Fog アクタを選択します。[Details] パネルから [Sun] カテゴリに移動し、[Default Brightness] の値を 0** に設定します。

    image alt text

  3. ワールド アウトライナーから Sky Sphere アクタを削除します。

    image alt text

  4. また、ワールド アウトライナーの Light Source アクタ も削除します。

    image alt text

  5. ツールバー に移動し、[Build (ビルド)] を選択してレベルのライティングを再ビルドします。

    image alt text

  6. ライティングのビルドが完了すると、レベルは次の画像のようになります。

    image alt text

最終結果

これで、Light アクタとレベルを設定できました。[PIE] をクリックすると観戦者のポーンの所有権が自動的に得られます。

観戦者のポーンを制御し、Light アクタの Box コンポーネントの境界に移動することができます。

Timeline コンポーネントの Play 関数がトリガーされると、ライトのカラーおよび明るさは 5 秒間で変化していきます。

image alt text

タグ
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル