当前位置:网站首页>如何实现网格建造系统
如何实现网格建造系统
2022-08-10 05:37:00 【优梦创客】
版权声明
- 本文为“优梦创客”原创文章,您可以自由转载,但必须加入完整的版权声明
- 更多学习资料请加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/BV1TK4y1g7Se
边栏推荐
猜你喜欢
随机推荐
计算数字区间中数字出现次数
Tensorflow 2.0 使用流程详解
LeetCode refers to the offer 21. Adjust the order of the array so that the odd numbers are in front of the even numbers (simple)
酸回收工艺原理
浅谈游戏中3种常用阴影渲染技术(1):平面阴影
【目标检测】相关指标的引入与解析
51单片机RS485远程双机多机温度采集主从机多节点蜂鸣器报警
以STM32F103C6TA为例通过配置CubeMX实现GPIO输出完成点灯实例
从零开始构建Google Protocol Buffer / protobuf 的helloworld工程(超级详细)
常用模块封装-csv文件操作封装
Unity中Xml简介以及通过脚本读取Xml文本中的内容
Pytorch配置与实战--Tips
浅谈《帧同步网络游戏》之“框架”实现思路
内核性能分析总结
STM32单片机手机APP蓝牙高亮RGB彩灯控制板任意颜色亮度调光
LeetCode 1351. Counting Negative Numbers in Ordered Matrices (Simple)
Pytorch - 07. Multidimensional characteristics of input processing
STM32单片机OLED经典2048游戏单片机小游戏
Flutter Package 插件开发
STC12C5A60S2单片机WIFI信号扫描报警监视系统信号增强信号过低报警









