版权声明
- 本文为“优梦创客”原创文章,您能够自由转载,但必须加入完整的版权声明
- 更多学习资料请加QQ:1517069595获取(企业级性能优化/Shader特效/热更新/shader特效/服务器/商业项目实战/每周直播/一对一指导)
咱们的建造系统要实现的目标:

- WASD在地图上移动
- 按1~6键切换建造单位类型
- 建筑单元可占据多个网格
- 左键按下执行建造(有建造效果)
- R键且换建造方向
- 右键按下销毁建在单位
- 不能重叠建造
定义基础网格数据结构


定义建筑预制体,点击建立实例

点击建立实例
解决建立位置重叠

只能建立在网格内(不能横跨)

- 根据鼠标位置获得网格位置
- 从而确保绘制在网格内
- 思考:如何从鼠标位置获得网格位置?
确保不能重叠建造


配置各建筑单位的数据

解决跨网格建筑单位重叠


解决方法:性能优化
- 获取建筑单位占据的全部网格坐标(如何实现?)
- 根据网格坐标找到网格对象
- 将这些网格对象都设置为被正在建立的建筑物占据
- 思考:如何实现GetPositionList?
使建筑单位建立方向可旋转(难点)

定义旋转轴(在Step2)服务器
- 定义当前方向
- 定义旋转规则
- 如何保持在同一个网格区域内旋转?
- 思考如何实现:
- GetNextDir
- GetRotationOffset
- GetRotationAngle
按键切换建筑单位种类


- 创建一个建筑单位种类列表
- 默认新建第0个种类的建筑
创建建筑放置预览效果



- GridObject改成存放PlaceObject
- 存储PlaceObject到GridObject
右键清除预览对象

运用放置效果

商业进阶

- 如何实现建筑单位升级?
- 升级系统(数据配置、UI界面、升级逻辑、服务器交互…)
- 如何实现建筑单位的AI?
- 建筑单位的抽象化:
- 怪物:自动战斗
- 角色:自主行为(休息、工做、娱乐、生活)、与场景内道具单位(如驾驶设施)的交互
- 设施:自动穿行的出租车、游乐场设施等
- 资源:可开采物、可拾取道具、障碍…
- 若是有成百上千个建筑呢?
- 若是不一样的玩家类型能够建造的建筑类型不一样呢?
- 如何增长建造游戏单元的UI操做界面?
- 如何联网游玩?


更多学习资源请加QQ:1517069595获取(/企业级性能优化/热更新/Shader特效/服务器/商业项目实战/每周直播/一对一指导)数据结构
完整视频能够点击B站连接::https://www.bilibili.com/video/BV1TK4y1g7Seide