A 背景

经过寻找发现有unity3d的[rts engine],ue4的[template 4]等rts引擎/模板。

没有搜到相关教程,倒是有几个老外的ue从零开发长篇教程。

rts engine有几个试玩视频,尝试找了一下。那就不用虚幻了。

距离[原坤争霸 genshin craft]近了一步捏。

B 导入rts engine

安装unity,下载rts engine(202210版本以上)

新建3d项目,导入

C demo

rts engine-configure demo layer,然后就可执行。

D 新建

根据官方文档,学一下各个功能。

官方文档:

Manual | Unity RTS Engine Documentation

一 新建地图

rts engine-configure new game,新建地图;

Window -> Rendering -> Lighting,底部auto generate打钩,使光照实时更新;

*目录结构:

unity rts unity RTS Engine 2022_缓存

 gameManager游戏管理器:初始化时最先加载,并加载其它内容;

        essential必要组件,不能删除;

        modules模块,可自定义;

resources资源:贴图、导入的模型、音频等等;

terrain地形:地形文件;

cameras相机;

factions阵营:阵营实体,如建筑单位;

UI界面对象;

unity rts unity RTS Engine 2022_加载_02

 prev scene上级场景,离开游戏后加载的场景的名字。如果有大厅系统,大厅系统会覆盖此字段。

gameCode代码,标识本地图、版本。

defeat condition胜利条件

        eliminate all消灭所有敌人

        eliminate main 消灭主城

        custom自定义

peace time duration和平时间(秒)

win/lose game audio胜利/失败音效

faction slots阵营插槽,地图可用出生点

random faction slots 随机插槽,启用后,大厅进入游戏将随机出生点

现可进行测试,仅有方块(主城单位)和一个胶囊(单位)

二 设置地形

1

unity rts unity RTS Engine 2022_缓存_03

 project栏中右键,创建terrain area type

key 标识,记得写一下

layer 分层,用于归类,例如陆地、海域

2

查看game manage-essential-terrain,地形管理器

unity rts unity RTS Engine 2022_游戏引擎_04

 area中添加刚才建立的地形

map size地图大小(不包含边界外一圈)

高度缓存,左下角、右上角坐标,用于缓存高度坐标,运行时不用现找高度,提高效率

高度缓存距离,间隔多少取样一次

高度缓存样本偏移,没太懂,翻译说往下,是说深度么?文档原文:

Height Cache Sample Offset: When sampling terrain's height to cache, this offset is added to the Raycast source position which will head downwards to detect the terrain object and sample the height.

base terrain基础地形,高度1.0,碰撞体f扩展到全地图(包括边缘往外一圈),摄像机、光线都应落在此地形上

base terrain layer 基础地形层,应不被其他对象使用

center:基础地形中心,地图中心

size:基础地形尺寸,包含地图边缘之外的一圈区域(镜头移到边缘时不至于看到虚空,边界外每边多60)

camera...... 摄像机位置到基础地形边缘距离控制

enable....  边缘碰撞体创建,阻挡摄像机继续往外移动而看到虚空。【允许摄像机自由转动时再开启】

3 实例栏中的terrain,挂靠至对应layer(若未挂靠)

4 烘焙导航网格,window-AI-navigation(ob)打开窗口,若没有则window-package manage中安装navigation。

进入object标签,再在实例栏点击地形,修改navigation area为walkable可行动的。

进入bake标签,烘焙。若调整参数需参考文档:

Unity - Manual: Building a NavMesh

unity rts unity RTS Engine 2022_unity rts_05

5 配置grid search handler网格搜索处理,允许其它组件搜寻单位、建筑、资源

点击实例栏gameManager-essential-search,调整数值,覆盖地图。cellSize越小越细,大了会搜索单元内所有实体从而消耗更高

unity rts unity RTS Engine 2022_游戏引擎_06

测试,可以移动胶囊了