由于需要使用FastNoiseLite库,需要先在项目中添加FastNoiseLite的头文件和源文件。

  1. 在项目中新建一个文件夹,命名为“ThirdParty”。
  2. 在“ThirdParty”文件夹中新建一个文件夹,命名为“FastNoiseLite”。
  3. 将FastNoiseLite的头文件“FastNoiseLite.h”和源文件“FastNoiseLite.cpp”复制到“FastNoiseLite”文件夹中。
  4. 在项目的.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;
}

使用方式:

  1. 在UE5的蓝图中,右键点击空白处,选择“Create Variable”创建一个变量。
  2. 在变量的类型中选择“Float”。
  3. 右键点击空白处,选择“Functions”中的“Perlin Noise”节点。
  4. 将变量拖入节点的“X”和“Y”输入框中。
  5. 设置其他参数,如频率、振幅、种子等。
  6. 将节点的输出连接到需要使用噪点的节点中。
使用C++编写一个可以在UE5蓝图中使用的节点功能是根据两个输入的值输出一个perlin噪点的值。请提供完整的cpp代码和头文件代码。请说明详细的使用方式Severity	Code	Description	Project	File	Line	Suppression StateError active	E1696	cannot open source file FastNoiseLiteh	MyGa

原文地址: https://www.cveoy.top/t/topic/bQWS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录