返回

UE4 C++新手指南:通过触发区域控制灯光变化

前端

前言

欢迎来到“最简单的 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++来控制灯光切换。希望您能学到一些有用的东西。