细说上帝视角游戏的快速创建
1.什么是上帝视角?
2.在unity中开发上帝视角游戏的注意事项
3.如何在unity中开发上帝视角游戏
4.上帝视角游戏开发工具总览
5.上帝视角游戏案例
6. 创建地图层级
7.深入分析LevelGenerator
8.在当前地图移动物体
9.精灵管理
10.在上帝视角地图进行物体转换
11其他上帝视角游戏开发工具包
目标: 电脑硬件的推陈出新,促使3D游戏更加蓬勃的发展。在那时由于当没有支持3D元素的硬件,开发3D游戏相当难,但聪明的前人也是在那时提出了一个绝妙的解决方案,上帝视角。
最受欢迎的前10名上帝视角游戏
- Clash Of Clans 部落冲突
- Plants vsZombies 植物大战僵尸
- Hay Day 卡通农场
- Boom Beach 海岛奇兵
- Kingdom Rush 皇家守卫军
- Monument Valley 纪念碑谷
- RollerCoasterTycoon 过山车大亨
- Castle Defense 城堡防御
- Crossy Road 天天过马路
- Village City 乡村城市
1. 什么是上帝视角?
简单来说,上帝视角无非就是将三维物体二维化。这种类型的游戏通常都是通过最简单又有效的瓦片地图进行铺盖实现的。它模拟类似于三维的世界空间,所以有时候又被称做伪3D或者2.5的视角游戏。早期最具有代表的游戏是Q*bert,它开发于1982年,是世界上第一款上帝视角游戏,现在的COC(部落冲突)和AOE(帝国时代)都属于它的子孙辈。
2.在unity中开发上帝视角游戏的注意事项
您可能在unity中开发上帝视角游戏中遭遇到以下的问题:首先难以对三维游戏视角下的各瓦片地图的位置进行定位,并且处理游戏物体在世界坐标和游戏坐标的映射和定位又非常复杂和耗时,更令人恐怖的是,Unity没有相应的工具和控件直接或间接支持上帝视角。所以直到目前为止,大多数的第三方工具/插件,都没有足够的强大功能或足够的优化,可顺利无忧地开发该类型游戏。再者,对于各瓦片地图的实时渲染也是非常损耗性能的,皆因其没有插件/工具优化到极致,导致加载时需要耗费非常多的时间。
3.所以话题又回到了如何正确地借助插件开发上帝视角游戏?
我在unity的资源商城找了很多相关的插件,印象最深的就是一款叫做UltimateIsometric Toolkit。
4.让我们对UltimateIsometric Toolkit进行简单的剖析
众所周知,Unity是一款非常棒的3D游戏开发引擎当然,它所存在的问题也非常严重,渲染3D游戏物体时非常占用内存!!!当您需要非常多的功夫来解决非常简单的问题,如排序,精灵图片切割和调动作,上帝视角游戏就不存在这个问题,并且会非常节约时间,因为它不需要对3D模型减面,优化纹理大小和添加各种刚体等。
由于无需渲染3D游戏物体,并且通过引入精灵链表(即每种精灵仅保存一份预设)的方式,大大节省了性能。再加上通过该插件对瓦块位置和游戏物体的定位,即可低损耗地解决繁杂的排序和运算量的问题。让我们用一个非常简单的例子来加深理解这个工具包。
5.案例精讲
为便于理解,该案例分为以下步骤:
- 为该游戏创建简单地图载体
- 在该载体上放置游戏物体
- 上帝视角空间的游戏物体变化
- 上帝视角空间的碰撞检测
- 精灵管理
- 工具包的其他功能
说了那么多,还是让我们动手实践一下吧。
6.创建简单层级地图
以下为创建简单层级地图的关键步骤:
创建一个2D的unity项目
把该插件导入你的新建项目中(点击这里下载该插件)
完成上述步骤后,开始创建我们瓦片地图的第一个瓦片。
创建一个瓦片然后制作成预设,该预设将用于填充层级地图。(你也可以使用工具包里的纹理图找到瓦片进行创建)
给该预设添加两个脚本,IsoObject和IsoCollider。
然后,创建一个空的游戏物体,命名其为LevelGenerator。
给新创建的游戏物体添加LevelGenerator.cs脚本,该脚本可以在 UltimateIsometric Toolkit > Code > IsometricTools > Other.找到。
7.深入分析LevelGenerator
Let us nowunderstand LevelGenerator:让我们对LevelGenerator进行分析
Size属性表示瓦片地图的大小,具体可看示意图。
可参考下图加深对瓦片地图在游戏场景的摆放。在LevelGenerator属性窗口,该小瓦片的大小设置为20,20,1,分别对应x,y,z.
Size属性描述被放置到瓦片地图上的瓦片的大小。它用于衡量小瓦片相对于在瓦片地图的自身位置的天神位置。
Seed用于定制随机数的种子,产生随机瓦片。
Roughness用于描述瓦片的分散状态。该值越大,瓦片所摆放的状态越分散。
振幅表示在瓦片地图中的瓦片层数
Prefab即您创建并添加了IsoObject脚本的瓦片。
设置上述属性的参数如下图所示:
需要注意的是,你需要为prefab属性分配一个预设引用。然后就创建一个如下的平面:
如果您仔细观察每个已经创建的瓦片,在它们身上都挂靠有2个脚本。
IsoObject:
该类可将游戏物体转变成一个倾斜视角的菱形物体(即上帝视角物体),并可对瓦片的位置和大小进行控制。所有在游戏场景里的物体都有transform组件,上帝视角游戏也一样,更不必说空的游戏物体。
IsoCollider:
添加该脚本后能自动为游戏物体添加网格碰撞器,用于碰撞检测。所以在创建了游戏预设时别忘了添加IsoCollider 和IsoObject 脚本。
使用该插件内置的瓦片,我们开始为瓦片添加下边界。二手手机号买卖平台以下截图就是我使用内置的瓦片所搭建,它的制作流程与搭建地图相似。模型参考如下:
提示:您也可以手动创建边界,但是实时渲染时会比较耗时。所以,根据自己项目的实际需求,我将对该插件的GenericGridMap脚本进行修改。然后现在可实现手动添加自己所需物件。只需随意拖拉插件的物件到地图上即可。
我使用了插件里的仙人掌,树和车子的预设模型来构建场景,该场景如下图所示:
看,是不是非常简单地创建一个上帝视角游戏的地图。使用该插件,我们无需去考虑游戏物体排序问题,仅需关注游戏核心功能的开发。
8.使用代码控制游戏物体的移动
在这个小节中,我们自定义一个脚本用于控制游戏物体的变换和移动。添加以下代码到一个车子的预设。
CarControllerScript:
9.精灵管理
当添加了上述代码到脚本中,即完成了为游戏物体添加方向的图标,现在小轿车的每个方向都有相应的指示图标用于指示方向。
10.变换
很明显,该类型游戏的物体变换与普通游戏的基本变换不一样。
在开始进行天神物体变换时,我们首先需要游戏物体相对于地图的方向进行运算。所以,我们会调用Isometric. vectorToIsoDirection (IsoDirection)进行计算,然后判定移动的方向(东南西北)。这个函数返回在等距映射isodirection的投影矢量。该投影矢量描述的是物体在游戏空间中的的实际位置。因此,在获得了目标位置,我们就可传递该参数给unity变换组件进行变换运算。
以上就是我们使用这个工具做游戏的一些描述。上述demo我用了1个多小时来制作,毕竟我是第一次接触到这个插件,所以必须先阅读下其文档。当熟练之后,我相信这个时间可以缩减到10来分钟。
11.其他的优点简述
该插件的优点还包括以下几点:
- 用非常少的开销同时处理成千上万的精灵
- 空间可视化简化了unity工作流程
- 全平台支持
- 实行运算
- 有各种用例的控制器脚本
- 详细的说明文档
- 版本容量小功能强大
- 非常人性的售后服务(email,教程和论坛)
- 游戏物体预设化
- 输入支持鼠标和触摸
结论:
使用该插件能非常简单和快捷地创建一个上帝视角的游戏。由于该插件功能强大并容易上手,所以使得它在相类似的插件中脱颖而出。
细说上帝视角游戏的快速创建相关推荐
- Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏
Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏 即使是现在,很多初学游戏开发的同学,在谈到Unity的时候,依然会认为Unity只能用于制作3D游戏的.实际上,Unity在2013年发布 ...
- datatable如何生成级联数据_UE4 C++结合DataTable批量快速创建DataAsset
剖析某些大型游戏的框架,可以发现广泛运用了DataTable与DataAsset来管理数据,DataTable的导入直接用Excel就能很轻易的完成,但是DataAsset却要一直手动去填,当Data ...
- OUYA游戏开发快速入门教程
OUYA游戏开发快速入门教程 试读地址:http://pan.baidu.com/s/1o63a3W2 本教程是国内唯一OUYA游戏开发教程.本教程基于Unity全面讲解OUYA游戏开发方式.内容包 ...
- C#游戏开发快速入门 2.1 构建游戏场景
C#游戏开发快速入门 2.1 构建游戏场景 如果已经计划好了要编写什么样的游戏,在打开Unity以后,要做的第一件事情就是构建游戏场景(Scene).游戏场景就是玩家游戏时,在游戏视图中看到的一切, ...
- C#游戏开发快速入门教程Unity5.5教程
C#游戏开发快速入门教程Unity5.5教程 试读文档下载地址:http://pan.baidu.com/s/1slwBHoD C#是微软发布的高级程序设计语言,这门语言和C语言一样,已经成为了大学计 ...
- Unity 2D游戏开发快速入门(内部资料)
Unity 2D游戏开发快速入门(内部资料) 试读样张:http://pan.baidu.com/s/1hqh5oqw Unity 2D游戏开发快速入门4 前 言 Unity是一款综合的游戏开发工具 ...
- 零基础学python图文版-如何快速创建投票页面 | 腾讯问卷怎么用_什么值得买
Kim工房:如何快速创建投票页面?这颗"腾讯问卷"请吃下! 2018-01-11 19:50:10 28点赞 275收藏 7评论 序:微信群没有投票功能,QQ群投票又太简陋,想搞个 ...
- canvas示例样式_使用js canvas和atari vcs trivia制作基本html游戏的快速示例
canvas示例样式 If you are anything like I was, you came into the programming world with some kind of fan ...
- python游戏编程书_Python游戏编程快速上手 第4版 (斯维加特著) 中文pdf扫描版[41MB]...
Python是一种高级程序设计语言,因其简洁.易读及可扩展性日渐成为程序设计领域备受推崇的语言. Python游戏编程快速上手 (第4版)通过编写一个个小巧.有趣的游戏来教授Python编程,并且采用 ...
最新文章
- java 面试题汇总
- python连接mysql数据库数据库_python如何连接mysql数据库
- python怎么输入文件数据库_python学习日记——文件及数据库
- 简单的busybox创建_用Busybox创建文件系统
- react 16.6 懒加载 Lazy 尝鲜
- android canvas 清空画布,清除canvas画布内容(点擦除+线擦除)
- 【LeetCode题解】二叉树的遍历
- ios打开html页面关闭当前页面跳转,【已解决】怎么从iOS原生界面跳转回到html页面呢...
- 给定一个数组 a[n], 输出b[n], 其中 b[i] = a[0]*a[1]...*a[i-1]*a[i+1]*....a[n]; 其中不能用除法 复杂度要求O(n)...
- 引用类型和值类型区别(一)
- json rpgmv 加密_rpg制作大师mv加密打包教程
- 什么目录存放Linux源代码,Linux根目录下有哪些目录,存放的内容是什么?
- vue element-plus 插件
- 航空航天行业工作站应用---EDA仿真计算工作站
- python日期函数_Python日期时间处理: datestuff
- oracle怎么用dmp文件,oracle 11g 如何打开dmp文件
- 近距离传感器(proximity sensor)
- WordPress活动日历和预订插件指南
- 微信小程序实现关闭功能
- Rest Stops 题解
热门文章
- 我欲封神——JAVA封神之路
- Iterator是什么,有什么作用?
- 杀戮间插件入坑指南(UT2004)
- OpenLayers 5 使用GeoJSON进行行政区划剪裁(clip, not mask or filter),非矢量图层覆盖
- problem-1654B. Prefix Removals-codeforces
- 三位分节制顺口溜_小学数学顺口溜
- NOI的1.9.8白细胞计数
- 【应用实例】单片机PM2.5空气监测仪--攀藤G5激光PM2.5传感器
- STM32F407使用串口3获取攀腾G7的PM2.5数据
- java获取当天星期几