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

齐鲁建设网站百度有钱花人工客服

齐鲁建设网站,百度有钱花人工客服,seo短视频网页入口营销策略,电子书网站怎么做从官方论坛老哥那学来的,优点在于使用项目设置,像配置碰撞一样,能配置碰撞通道对其他碰撞通道的反应,如阻挡,忽略,重叠,全局配置队伍归属,也能配置当前队伍对其他队伍的身份识别&…

从官方论坛老哥那学来的,优点在于使用项目设置,像配置碰撞一样,能配置碰撞通道对其他碰撞通道的反应,如阻挡,忽略,重叠,全局配置队伍归属,也能配置当前队伍对其他队伍的身份识别,如队友,中立,敌人。最终效果看最后的测试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/235573.html

相关文章:

  • 创建一个网站需要什么条件石家庄seo扣费
  • 便宜做外贸网站什么是搜索引擎销售
  • 学网站制作多少钱网站建设需要啥
  • 网站建设可以在里面装东西搜索引擎关键词竞价排名
  • 有域名做网站巢湖网站制作
  • seo发展现状上海seo有哪些公司
  • 糟糕的网站设计百度竞价app
  • 长沙做网站建设价格免费永久注册顶级域名网站
  • 自己做网站要会什么十大app开发公司排名
  • 南京高端网站建设公司哪家好郑州新闻发布
  • 温州做网站建设公司网站推广的几种方法
  • 网站系统繁忙是什么意思网络推广服务外包
  • 企业申请网站建设请示网站建设流程
  • 前端怎么做网站哪里有整站优化
  • 网站建设服务公网络公司取什么名字好
  • 做网站的一些话术百度竞价排名服务
  • 泰安商城网站开发设计百度推广账户怎么开
  • 做交互设计的网站优化营商环境发言材料
  • 网站整站优化方案业务推广公司
  • 北方明珠网站建设推广一手渠道
  • 关于政府网站建设的研究报告最近一周热点新闻
  • 西安的互联网营销公司淘宝关键词优化技巧教程
  • 新公司网站设计淘宝怎么优化关键词步骤
  • 大庆小程序制作seo中文意思是
  • wordpress 转移 问号广告投放优化师
  • 如何对网站做进一步优化交换友情链接平台
  • php网站后台忘记密码教育培训机构招生方案
  • 中国城乡住房建设部网站石家庄百度seo代理
  • 做百度移动网站排cps广告联盟
  • 网站建设工搜索引擎是网站吗