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

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):

主站蜘蛛池模板: 贵港市| 江阴市| 福泉市| 石台县| 喀喇沁旗| 佛学| 顺义区| 疏勒县| 班玛县| 留坝县| 宕昌县| 乌拉特中旗| 容城县| 重庆市| 周宁县| 阿克苏市| 黔西县| 惠东县| 郑州市| 苍山县| 新蔡县| 柘城县| 泰来县| 桓仁| 栖霞市| 睢宁县| 肥乡县| 丰原市| 喀喇沁旗| 京山县| 青阳县| 正阳县| 鄢陵县| 绥滨县| 肥乡县| 罗源县| 西贡区| 昌图县| 崇信县| 通州市| 嘉义县|