UE4 C++新手指南:通过触发区域控制灯光变化
2023-11-09 15:05:36
前言
欢迎来到“最简单的 UE 4 C++ 教程”系列的第二十三章!在这一章中,我们将学习如何使用触发区域来控制灯光切换。这是一个非常基本但实用的技巧,可以为您的游戏增添一些交互性和视觉效果。
创建新项目
首先,我们需要创建一个新的UE4项目。为此,请打开UE4编辑器,然后单击“新建项目”按钮。在“项目名称”字段中,输入“TriggerAreaLightSwitch”。在“项目位置”字段中,选择一个您想保存项目的位置。然后,单击“创建项目”按钮。
添加触发区域
接下来,我们需要添加一个触发区域。为此,请右键单击“关卡”选项卡,然后选择“添加 Actor”>“触发器”>“触发区域”。这将在关卡中放置一个触发区域。
添加灯光
现在,我们需要添加一个灯光。为此,请右键单击“关卡”选项卡,然后选择“添加 Actor”>“灯光”>“点光源”。这将在关卡中放置一个点光源。
编写C++代码
现在,我们需要编写一些C++代码来控制灯光切换。为此,请打开“内容浏览器”选项卡,然后找到您创建的触发区域。右键单击它,然后选择“编辑”。这将在C++代码编辑器中打开触发区域的代码文件。
在代码文件中,找到以下函数:
void ATriggerAreaLightSwitch::BeginPlay()
{
Super::BeginPlay();
// Get the point light actor
PointLight = Cast<APointLight>(GetOwner());
// Set the initial light intensity
PointLight->SetIntensity(0.0f);
}
这个函数在触发区域开始播放时被调用。它获取点光源的引用,并将光强设置为0.0f。这将导致灯光在触发区域外关闭。
接下来,找到以下函数:
void ATriggerAreaLightSwitch::OnActorBeginOverlap(AActor* OverlappedActor, AActor* OtherActor)
{
Super::OnActorBeginOverlap(OverlappedActor, OtherActor);
// Check if the overlapping actor is the player character
if (OtherActor->IsA(ACharacter::StaticClass()))
{
// Turn on the light
PointLight->SetIntensity(1.0f);
}
}
这个函数在另一个Actor进入触发区域时被调用。它检查重叠的Actor是否是玩家角色。如果是,则将光强设置为1.0f。这将导致灯光在玩家进入触发区域时打开。
最后,找到以下函数:
void ATriggerAreaLightSwitch::OnActorEndOverlap(AActor* OverlappedActor, AActor* OtherActor)
{
Super::OnActorEndOverlap(OverlappedActor, OtherActor);
// Check if the overlapping actor is the player character
if (OtherActor->IsA(ACharacter::StaticClass()))
{
// Turn off the light
PointLight->SetIntensity(0.0f);
}
}
这个函数在另一个Actor离开触发区域时被调用。它检查重叠的Actor是否是玩家角色。如果是,则将光强设置为0.0f。这将导致灯光在玩家离开触发区域时关闭。
保存并运行游戏
现在,您已经编写了C++代码,就可以保存并运行游戏了。为此,请单击“文件”>“保存”。然后,单击“播放”>“运行游戏”。这将在独立窗口中启动游戏。
测试触发区域
现在,您就可以测试触发区域了。为此,请在关卡中移动玩家角色。当您进入触发区域时,灯光应该打开。当您离开触发区域时,灯光应该关闭。
总结
恭喜您!您已经成功地创建了一个触发区域,当玩家进入该区域时,灯光会随之切换。本教程向您展示了如何使用UE4 C++来控制灯光切换。希望您能学到一些有用的东西。