当前位置: 首页 > wzjs >正文

网站建设300百度 搜索热度

网站建设300,百度 搜索热度,宁夏做网站建设公司,天津市建设信息网官网从官方论坛老哥那学来的,优点在于使用项目设置,像配置碰撞一样,能配置碰撞通道对其他碰撞通道的反应,如阻挡,忽略,重叠,全局配置队伍归属,也能配置当前队伍对其他队伍的身份识别&…

从官方论坛老哥那学来的,优点在于使用项目设置,像配置碰撞一样,能配置碰撞通道对其他碰撞通道的反应,如阻挡,忽略,重叠,全局配置队伍归属,也能配置当前队伍对其他队伍的身份识别,如队友,中立,敌人。最终效果看最后的测试How do I use the AI Perception Teams? - #2 by Gossy - C++ - Epic Developer Community Forums

一、定义队伍枚举:

Team.h

#pragma once
#include "GenericTeamAgentInterface.h"
#include "Team.generated.h"UENUM(BlueprintType)
enum class EGameTeam: uint8
{Neutral,Team1,Team2,Team3,Team4
};USTRUCT(BlueprintType)
struct FTeamAttitude
{GENERATED_BODY()UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="")TArray<TEnumAsByte<ETeamAttitude::Type>> Attitude;FTeamAttitude() {};FTeamAttitude(std::initializer_list<TEnumAsByte<ETeamAttitude::Type>> attitudes):Attitude(std::move(attitudes)){ };
};

FTeamAttitude意在包裹一维数组,因为引擎不支持二维数组。所偶一用TArray<FTeamAttitude>来组成二维数组。
二、自定义项目设置
自定义项目设置使用UDeveloperSettings类。需要使用DeveloperSettings模块

MyGameSettings.h

MyGameSettings.cpp

#include "MyGameSettings.h"
ETeamAttitude::Type UMyGameSettings::GetAttitude(FGenericTeamId SourceTeam, FGenericTeamId TargetTeam)
{auto & TeamAttitudes = GetDefault<UMyGameSettings>()->TeamAttitudes;bool SourceValid = TeamAttitudes.IsValidIndex(SourceTeam.GetId());bool TowardValid = TeamAttitudes.IsValidIndex(TargetTeam.GetId());if (SourceValid && TowardValid){auto & Attitudes = TeamAttitudes[SourceTeam.GetId()].Attitude;if (Attitudes.IsValidIndex(TargetTeam.GetId())){return Attitudes[TargetTeam.GetId()];}}return ETeamAttitude::Neutral;
}

GetCatrgoryName表示大标题名,GetSectionName表示小标题,UPROPERTY(Category = "")表示标签。UClass(MyCustomSettings,DefaultConfig)表示存储在Config/DefualtMyCustomSettings中(第一次修改后才会出现这个文件)


GetAttitude提供解析这个二维数组方法。通过传入源队伍和目标队伍,得知源队伍对目标队伍的态度。
这个方法要配合FGenericTeamId::SetAttitudeSolver使用



在GameMode.PlayStart中将GetAttitude方法传入即可。

// Fill out your copyright notice in the Description page of Project Settings.#include "LCGameMode.h"#include "GenericTeamAgentInterface.h"
#include "MyGameSettings.h"void ALCGameMode::StartPlay()
{Super::StartPlay();FGenericTeamId::SetAttitudeSolver(&UMyGameSettings::GetAttitude);
}

追踪一下这个方法在哪里被使用到

void FGenericTeamId::SetAttitudeSolver(const FGenericTeamId::FAttitudeSolverFunction& Solver)
{AttitudeSolverImpl = Solver;
}

FGenericTeamId

在这个函数中,会调用解析方法判断态度,如果没设置解析方法,则返回中立。
IGenericTeamAgentInterface:


在IGenericTeamAgentInterface中,获取对其他Actor态度时就是调用这个方法。


而AIController就是实现了这个接口来获取对其他Actor的态度。

总结:AIController最终调用了在GameMode中设置的解析方法来解析项目设置中的二维数组来判断归属,并决定检测还是不检测。
 

三、设置Actor的归属。
1.实现IGenericTeamAgentInterface中的SetGenreicTeamId与GetGenericTeamId接口。

对于玩家,声明Team变量

将TeamId的Setter,Getter转换一下成自己的枚举。
2.对于AIController做相同的操作。因为AIController判断归属时,是将传进来的Actor转换成IGenericTeamAgentInterface,然后将自己和Actor的TeamId传入判断态度。
3.对于AIController控制的NPC,也实现这个接口,用于让AIController判断NPC的身份。

Getter和Setter都调用AIController的Getter和Setter.

至此,玩家和敌人的团队也都设置好了。

四、AI感知

AIController内置了一个AI感知组件的变量,并且在PostRegisterComponent中查找自身有没有这个组件,然后赋值给这个变量,所以起始不内置这个组件


所以需要自己在构造函数中构造这个组件。我顺便添加以下视觉感知,并设置仅感知敌人。

至此大功告成。来测试测试。写了3100字,终于配置好了AI感知和归属检测(汗)
五、测试

设置三个队伍,Team1,Team2,Team3。如下


Team1对Team1友好,对其他中立。

Team2对Team1中立,对Team2友好,对其他敌对。

Team3对Team1中立,对Team3友好,对其他敌对。

测试场景:

1.设置仅检测敌对:

2.设置检测敌对和中立

3.设置全部检测


4.当场更改一下项目设置,Team3对Team1也敌对,看看对Team1会不会由中立变为敌对。


1.仅检测中立:

2.仅检测敌人:

设置生效了,Team1不再被Team3视为中立,而是视为敌人!

总结:这次的论坛老哥很给力。让我学习到了DeveloperSettings类的使用,还有对AI队伍归属机制的进一步理解,并成功实现使用项目设置配置队伍归属权,拓展性更好。进一步的研究可能是怎么将项目设置配置成像碰撞配置那样简洁明了,并且可以在Actor中覆盖。

http://www.dtcms.com/wzjs/511973.html

相关文章:

  • 什么网站可以用手机做兼职赚钱世界500强企业
  • 沈阳网站建设58同城项目宣传推广方案
  • 科技让生活更美好作文450字朝阳seo推广
  • 药品网站网络营销推广怎么做会计培训班多少钱
  • 网站系统制作教程肇庆网络推广
  • 免费商用的网站模板网站搭建费用
  • AD这个软件做网站用得着吗百度商家入驻怎么做
  • 深圳最好的网站建设公司长沙正规竞价优化推荐
  • 早教网站设计周口网络推广哪家好
  • 微信网页宣传网站怎么做的想要网站推广版
  • 有没有专门做衣服搭配的网站如何拿高权重网站外链进行互换?
  • 济南网站建设公司郑州网站顾问热狗网
  • 海南省住房和城乡建设厅网站网上版百度推荐现在为什么不能用了
  • 苏州seo网站公司什么是百度搜索推广
  • 公司做网站好网店运营工作内容
  • 湖南网站建设设计中国最新军事新闻直播
  • 网站建设建网站年轻的母亲免费网站模板
  • wordpress安装是失败广东seo排名
  • 江苏省建设证书变更网站地产渠道12种拓客方式
  • 深圳网站建设制作哪家好网站性能优化方法
  • 公司网站荣誉墙怎么做公司网页制作需要多少钱
  • 网页设计短期培训seo营销网站的设计标准
  • 怎么查工程中标单位宁波seo教程行业推广
  • 做钢丝绳外贸的网站百度快照投诉中心官网
  • 大连网站开发多少钱有没有帮忙推广的平台
  • 访链家网网站开发小程序开发平台
  • 网站建设策划案关键词搜索排名工具
  • 电子商务网站建设的步骤过程网站友情链接怎么弄
  • 网站建设电子书seo技巧与技术
  • 大学网站开发专业怎么样搜索排名竞价