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打钩,使光照实时更新;
*目录结构:
gameManager游戏管理器:初始化时最先加载,并加载其它内容;
essential必要组件,不能删除;
modules模块,可自定义;
resources资源:贴图、导入的模型、音频等等;
terrain地形:地形文件;
cameras相机;
factions阵营:阵营实体,如建筑单位;
UI界面对象;
prev scene上级场景,离开游戏后加载的场景的名字。如果有大厅系统,大厅系统会覆盖此字段。
gameCode代码,标识本地图、版本。
defeat condition胜利条件
eliminate all消灭所有敌人
eliminate main 消灭主城
custom自定义
peace time duration和平时间(秒)
win/lose game audio胜利/失败音效
faction slots阵营插槽,地图可用出生点
random faction slots 随机插槽,启用后,大厅进入游戏将随机出生点
现可进行测试,仅有方块(主城单位)和一个胶囊(单位)
二 设置地形
1
project栏中右键,创建terrain area type
key 标识,记得写一下
layer 分层,用于归类,例如陆地、海域
2
查看game manage-essential-terrain,地形管理器
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
5 配置grid search handler网格搜索处理,允许其它组件搜寻单位、建筑、资源
点击实例栏gameManager-essential-search,调整数值,覆盖地图。cellSize越小越细,大了会搜索单元内所有实体从而消耗更高
测试,可以移动胶囊了