实现网格建造系统

版权声明

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

我们的建造系统要实现的目标:

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706183445990.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw==,size_16,color_FFFFFF,t_70)

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

定义基础网格数据结构

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706183721862.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706183735268.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw
,size_16,color_FFFFFF,t_70)

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

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706183748407.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw==,size_16,color_FFFFFF,t_70)

点击创建实例![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706183809681.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw==,size_16,color_FFFFFF,t_70)

解决创建位置重叠

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706183827644.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw==,size_16,color_FFFFFF,t_70)

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

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706183843688.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw==,size_16,color_FFFFFF,t_70)

  • 根据鼠标位置得到网格位置
  • 从而确保绘制在网格内
  • 思考:如何从鼠标位置得到网格位置?

确保不能重叠建造

![在这里插入图片描述]( https://img-blog.csdnimg.cn/2021070618414877.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184157726.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw
,size_16,color_FFFFFF,t_70)

配置各建筑单位的数据

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184217488.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw==,size_16,color_FFFFFF,t_70)

解决跨网格建筑单位重叠

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184305548.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184340428.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw
,size_16,color_FFFFFF,t_70)

解决方法:

  • 获取建筑单位占据的所有网格坐标(如何实现?)
  • 根据网格坐标找到网格对象
  • 将这些网格对象都设置为被正在创建的建筑物占据
  • 思考:如何实现GetPositionList?

使建筑单位创建方向可旋转(难点)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184524359.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw==,size_16,color_FFFFFF,t_70)

定义旋转轴(在Step2)

  • 定义当前方向
  • 定义旋转规则
  • 如何保持在同一个网格区域内旋转?
  • 思考如何实现:
    • GetNextDir
    • GetRotationOffset
    • GetRotationAngle

按键切换建筑单位种类

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184651610.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184710286.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw
,size_16,color_FFFFFF,t_70)

  • 建立一个建筑单位种类列表
  • 默认新建第0个种类的建筑

建立建筑放置预览效果

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184755461.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184806832.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw
,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184918930.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw==,size_16,color_FFFFFF,t_70)

  • GridObject改为存放PlaceObject
  • 存储PlaceObject到GridObject

右键清除预览对象

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184935734.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw==,size_16,color_FFFFFF,t_70)

运用放置效果

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706184946326.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw==,size_16,color_FFFFFF,t_70)

商业进阶

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706185002241.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw==,size_16,color_FFFFFF,t_70)

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

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210706185038630.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/2021070618504682.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JheW1vbmRfS2luZzEyMw
,size_16,color_FFFFFF,t_70)

更多学习资源请加QQ:1517069595获取(/企业级性能优化/热更新/Shader特效/服务器/商业项目实战/每周直播/一对一指导)

完整视频可以点击B站链接::https://www.bilibili.com/video/BV1TK4y1g7Se

posted @ 2021-07-06 16:39  优梦创客  阅读(568)  评论(0)    收藏  举报