官术网_书友最值得收藏!

Creating a NavArea class in C++

It's easy to create a NavArea class in C++ as well. First of all, you need to create a new C++ class that inherits from the NavArea class, as shown in the following screenshot:

By convention, the name should start with "NavArea_". Therefore, you can rename it NavArea_Desert (just to vary which kind of terrain the AI can face, since we created a Jungle previously) and place it in "Chapter3/Navigation":

Once you have created the class, you just need to assign the parameters in the constructor. For your convenience, here is the class definition in which we declare a simple constructor:

#include "CoreMinimal.h"
#include "NavAreas/NavArea.h"
#include "NavArea_Desert.generated.h"

/**
*
*/
UCLASS()
class UNREALAIBOOK_API UNavArea_Desert : public UNavArea
{
GENERATED_BODY()

UNavArea_Desert();

};

Then, in the implementation of the constructor, we can assign the different parameters. For instance, we can have a high cost for entering and a higher cost for traversing (with respect to the Default or the Jungle). Furthermore, we can set the color to Yellow so that we remember that it is a desert area:

#include "NavArea_Desert.h"

UNavArea_Desert::UNavArea_Desert()
{
DefaultCost = 1.5f;
FixedAreaEnteringCost = 3.f;
DrawColor = FColor::Yellow;
}
You can always play with these values to see which one works best for you. For instance, you can create an area with a very high entering cost, but a low traversal cost. As a result, you will have an area that, should be avoided if it's only going to be traversed for a little while, but if the agent traverses it for a long period of time, it might be more convenient than the shorter route.

Once you have created the class, you can set it as part of the Nav Modifier Volume, as shown in the following screenshot: 

As a result, you will be able to see your custom area in the Nav Mesh (in this case, with a Yellow Color):

主站蜘蛛池模板: 西安市| 赤城县| 汾西县| 疏附县| 昭通市| 桃源县| 瑞丽市| 满城县| 天门市| 舒兰市| 双辽市| 克拉玛依市| 三都| 平南县| 济阳县| 北安市| 剑河县| 黎平县| 南安市| 灌阳县| 漳州市| 三江| 高州市| 兴城市| 湘阴县| 仁布县| 钦州市| 景宁| 政和县| 定安县| 大化| 伊川县| 易门县| 襄汾县| 聂拉木县| 凌源市| 怀远县| 邵阳市| 得荣县| 清涧县| 阿鲁科尔沁旗|