使用C++编写一个可以在UE5蓝图中使用的节点功能是根据两个输入的值输出一个perlin噪点的值。请提供完整的cpp代码和头文件代码。请说明详细的使用方式Severity Code Description Project File Line Suppression StateError active E1696 cannot open source file FastNoiseLiteh MyGa
由于需要使用FastNoiseLite库,需要先在项目中添加FastNoiseLite的头文件和源文件。
- 在项目中新建一个文件夹,命名为“ThirdParty”。
- 在“ThirdParty”文件夹中新建一个文件夹,命名为“FastNoiseLite”。
- 将FastNoiseLite的头文件“FastNoiseLite.h”和源文件“FastNoiseLite.cpp”复制到“FastNoiseLite”文件夹中。
- 在项目的.build.cs文件中添加以下代码:
PublicIncludePaths.Add(Path.Combine(ModuleDirectory, "ThirdParty", "FastNoiseLite"));
PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "ThirdParty", "FastNoiseLite", "FastNoiseLite.cpp"));
现在可以开始编写节点的代码了。
头文件代码:
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "FastNoiseLite.h"
#include "PerlinNoiseLibrary.generated.h"
UCLASS()
class MYGAMETESTA_API UPerlinNoiseLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "Perlin Noise")
static float GeneratePerlinNoise(float X, float Y, float Frequency, float Amplitude, int Octaves, float Persistence, float Lacunarity, int Seed);
};
cpp代码:
#include "PerlinNoiseLibrary.h"
float UPerlinNoiseLibrary::GeneratePerlinNoise(float X, float Y, float Frequency, float Amplitude, int Octaves, float Persistence, float Lacunarity, int Seed)
{
FastNoiseLite Noise;
Noise.SetSeed(Seed);
Noise.SetFrequency(Frequency);
Noise.SetFractalOctaves(Octaves);
Noise.SetFractalPersistence(Persistence);
Noise.SetFractalLacunarity(Lacunarity);
return Noise.GetNoise(X, Y) * Amplitude;
}
使用方式:
- 在UE5的蓝图中,右键点击空白处,选择“Create Variable”创建一个变量。
- 在变量的类型中选择“Float”。
- 右键点击空白处,选择“Functions”中的“Perlin Noise”节点。
- 将变量拖入节点的“X”和“Y”输入框中。
- 设置其他参数,如频率、振幅、种子等。
- 将节点的输出连接到需要使用噪点的节点中。
原文地址: https://www.cveoy.top/t/topic/bQWS 著作权归作者所有。请勿转载和采集!