网易首页 > 网易号 > 正文 申请入驻

快速学习制作类似《部落冲突》的等距游戏

0
分享至

随着游戏开发技术在不断进步,3D游戏变得越来越普遍。但在多年前,还没有对3D元素的支持,开发3D游戏非常困难,当时的解决方案是利用由2D元素组成的等距视图。

本文将由开发者Vivek Tank带领我们来学习如何制作类似《部落冲突》的一个简单等距游戏。下面是学习本文后,将要实现的效果。

最热门的等距游戏

如果你不了解什么是等距游戏,下面我们将盘点出的Top 10最热门等距游戏。

  1. 部落冲突

  2. 植物大战僵尸

  3. 卡通农场

  4. 海岛奇兵

  5. 皇家守卫军

  6. 纪念碑谷

  7. 过山车大亨

  8. 城堡防御

  9. 天天过马路

  10. 乡村城市

相信对于榜单中的等距游戏,你一定有所耳闻,或者沉迷其中感受过等距游戏的魅力。

学习准备

1

了解等距视图

什么是等距视图呢?简单来说,等距视图是为2D游戏实现3D错觉效果。

等距视图可以通过基于平铺的方法来制作,这也是最常见有效的方法之一。等距视图能实现3D错觉效果,有时它也被称为伪3D或2.5D。

1982年出品的《Q*bert》是第一批使用等距视图的游戏。如今《部落冲突》和《帝国时代》等大型游戏也使用了这种投射方法。

2

Unity中开发等距游戏的问题

在Unity中开发等距游戏时,我们可能会遇到以下问题:

  • Unity计算定位瓦片的方法会使游戏的3D视图制作变复杂。

  • 将世界空间或游戏空间的对象实际位置映射到等距视图的本地位置会很复杂,而且非常耗时。

  • Unity没有任何直接处理等距投射的工具或支持。

  • 目前大多数第三方工具在开发流畅理想的等距游戏方面不够强大,也没有足够的优化效果。

  • 这类地图生成的计算量很大,目前没有工具能以优化的速度加载等距地图。

3

使用Ultimate Isometric Toolkit开发等距游戏

在研究解决问题时,我们在Asset Store资源商店尝试了大量工具,最终选择的是Ultimate Isometric Toolkit。

作为3D引擎,Unity在开发3D游戏时非常强大,但是Unity会产生制作和渲染3D对象的性能开销。对于等距游戏,我们需要大量额外代码来解决相关问题,例如:排序,插入精灵和持续移动。

等距风格3D游戏的优点很明显,我们能够节省大量时间,不必为3D对象进行建模,制作纹理和绑定等工作。我们完全去除了渲染3D场景的性能开销,通过使用精灵图集节省了大量相关3D资产制作所需投入资金。

实现3D错觉的定位瓦片计算,以及把对象实际位置映射到等距视图位置的工作,都可以由Ultimate Isometric Toolkit完成。Ultimate Isometric Toolkit也很好地解决了排序问题以及制作等距视图的其它算法,使用的性能开销很低。

Ultimate Isometric Toolkit下载地址:

https://assetstore.unity.com/packages/templates/systems/ultimate-isometric-toolkit-33032

4

学习目标

下面我们将通过简单的示例来学习Ultimate Isometric Toolkit的使用。我们将了解以下内容:

  • 在等距视图创建简单的基础地面

  • 在基础地面上放置对象

  • 在等距空间平移对象

  • 在等距空间实现碰撞检测

  • 精灵管理

  • 了解Ultimate Isometric Toolkit的功能

创建等距游戏

1

创建简单的等距关卡

我们在Unity中新创建一个2D项目,并在项目中导入Ultimate Isometric Toolkit资源包。

首先,我们创建瓦片地图的基础地面,并为瓦片创建预制件,它会用来制作基础地面,你可以使用Ultimate Isometric Toolkit的任意精灵块。我们把IsoObject脚本和IsoCollider脚本添加到预制件。

在场景新创建一个空白游戏对象并命名为LevelGenerator,把LevelGenerator.cs脚本添加到新建游戏对象。你可以在Ultimate Isometric Toolkit > Code > IsometricTools > Other下找到LevelGenerator.cs脚本。

2

了解LevelGenerator对象

下面让我们来了解LevelGenerator。

Size表示下图中瓦片地图的大小。在LevelGenerator脚本中,瓦片在场景中的放置方法如下图所示,图中的基础地面大小为(x, y, z):(20, 20, 1)。

Tile Size表示放到地图的每个瓦片的大小,它会相对于IsoObject在瓦片地图的位置,调整IsoObject的等距位置。Seed用于创建随机地图。

Ruffness表示瓦片放置的粗糙程度。粗糙度越大,瓦片会更为分散。Amplitude表示地图中将使用的瓦片图层数量。Prefab会给IsoObject对象提供我们创建的瓦片预制件引用。

请按下图设置这些属性。

请注意,我们必须在Prefab属性中设置引用,这样会创建如下图所示的平面。

每个瓦片创建后,我们会得到二个附加的脚本:

  • IsoObject:使游戏对象变成等距对象的基类,它会表示瓦片的位置和大小。场景中所有对象都有Transform组件,它是等距游戏的一部分。即使是空白游戏对象,也应该有附带该组件。

  • IsoCollider:该脚本通过自动添加网格碰撞体,在等距游戏对象中实现碰撞检测。

在给地图创建预制件时,不要忘记添加IsoCollider脚本和IsoObject 脚本。

现在选中其它预制件,在地图边缘创建边界。我们制作了不同的预制件来创建边界,方法类似制作地面的预制件,如下图所示。

你也可以手动制作边界,但这样做耗时很久。在这个示例中,我们修改了Ultimate Isometric Toolkit的GenericGridMap脚本来制作边界。

现在根据需要手动添加对象。把工具提供的预制件手动拖到基础地面上。我们使用了部分图集的预制件,包括仙人掌,树木和汽车,创建出下图的场景。

这样一个等距地图就创建完成了,使用工具制作等距地图的过程如此轻松,我们不必担心排序算法,该工具会处理好所有内容,使我们能够专注于游戏的核心功能。

3

在当前地图移动对象

现在我们创建一个脚本CarController,用于实现对象在等距地图上的移动过程。并将脚本附加到汽车预制件上。

CarController脚本代码如下所示。

public class CarController : MonoBehaviour
{
public float speed = 10;
public SpriteRenderer spriteRenderer;
public Sprite carSpriteNorth;
public Sprite carSpriteSouth;
public Sprite carSpriteWest;
public Sprite carSpriteEast;
public GameObject explisionPrefeb;
private IsoDirection currentDirection;
private Vector3 targetPosition;
void Start()
{
currentDirection = IsoDirection.North;
spriteRenderer.sprite = carSpriteNorth;
}
void Update()
{
if (!GameManager.Instance.isGameRunning)
return;
//北
if (Input.GetKeyDown(KeyCode.UpArrow))
{
currentDirection = IsoDirection.North;
spriteRenderer.sprite = carSpriteNorth;
}
//南
else if (Input.GetKeyDown(KeyCode.DownArrow))
{
currentDirection = IsoDirection.South;
spriteRenderer.sprite = carSpriteSouth;
}
//西
else if (Input.GetKeyDown(KeyCode.LeftArrow))
{
currentDirection = IsoDirection.West;
spriteRenderer.sprite = carSpriteWest;
}
//东
else if (Input.GetKeyDown(KeyCode.RightArrow))
{
currentDirection = IsoDirection.East;
spriteRenderer.sprite = carSpriteEast;
}
targetPosition = Isometric.vectorToIsoDirection (currentDirection);
transform.Translate (targetPosition * Time.deltaTime * speed);
}
void OnCollisionEnter(Collision other)
{
if (other.gameObject.CompareTag("Finish") && GameManager.Instance.isGameRunning)
{
spriteRenderer.sprite = null;
Instantiate(explisionPrefeb, transform.position, transform.rotation);
GameManager.Instance.OnGameOver();
}
}
}

4

精灵管理

如CarController脚本的代码所示,我们有四个不同精灵用在四个方向。因此,汽车会在每个方向上使用单独的精灵。

5

在等距地图上平移

等距对象的平移过程和普通变换过程的操作不同。对于等距平移,我们必须相对于等距地图来计算方向。为此我们会使用Isometric类函数。

Isometric. vectorToIsoDirection (IsoDirection)

我们在此使用该函数以任一IsoDirection方向移动汽车,即东南西北四个方向。该函数会返回等距地图上的IsoDirection投射向量,投射向量表示汽车在Unity游戏空间的实际位置。

在获得移动汽车的目标位置后,我们可以把目标位置传给Unity中Transform类的Translate方法。

这就是我们使用Ultimate Isometric Toolkit这个强大工具制作简单等距游戏的方法。

6

Ultimate Isometric Toolkit的优点

下面是一些Ultimate Isometric Toolkit的优点:

  • 一次处理上千个精灵,仅需很少性能开销

  • 提供简化Unity工作流程的编辑器工具

  • 支持Unity提供的所有平台

  • 提供运行时关卡生成功能

  • 提供适用于大量用例的控制器脚本

  • 详实的文档

  • 提供Lite版和Pro版

  • 通过Email、视频、Unity论坛等方式提供用户支持

  • 所有内容都经过排序并制作了预制件

  • 支持鼠标和触屏输入

结语

通过使用Ultimate Isometric Toolkit,制作等距视图游戏变得非常简单又省时。该工具功能强大,易于理解,这些优点使它在其它等距工具中脱颖而出。

你学会了吗?赶紧动手来制作等距游戏吧。更多Unity教程,尽在Unity官方中文论坛(UnityChina.cn)

  • 在Unity中使用WFC算法无限生成城市

  • 在Unity中程序化生成地牢环境

  • Facial AR Remote: Unity面部捕捉解决方案入门指南

  • 使用AR Foundation制作圣诞AR小游戏

  • 粒子特效教程 | GPU粒子力场

  • Unity Playground开启游戏制作之旅

  • 盘点CES 2019的Unity汽车行业解决方案

  • Unity收购知名游戏语音和文字通信服务提供商Vivox

官方活动

Unity趣味问答,赢取新年礼物

2月16日18点前,参加Unity趣味问答,赢取限量Unity纪念礼物。了解详情,请点击此处。

Asset Store新春特惠

2月23日前,Asset Store资源商店将进行新春特惠活动,全场资源9折,更有顶级精品资源7折,赶紧选购吧。了解详情,请点击此处。

Unite Shanghai 2019

5月10日-12日上海,Unite大会强势回归。技术门票正在热销中,购票即获指定Asset Store资源商店精品21款资源的5折优惠券。

  • 了解Training Day开发者训练营课程内容,请点击此处。

  • Unite大会Made with Unity作品招募,请点击此处。

  • Unite大会案例分享专场演讲席位招募,请点击此处。

购票请访问:Unite2019.csdn.net

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
横店炮王解约的真相!

横店炮王解约的真相!

八卦疯叔
2026-07-18 10:22:30
西班牙队不败纪录达38场,本届唯一踢平他们的佛得角队被戏称为“冠军质检员”;西班牙队主帅为球员感到自豪,也称赞阿根廷队门将

西班牙队不败纪录达38场,本届唯一踢平他们的佛得角队被戏称为“冠军质检员”;西班牙队主帅为球员感到自豪,也称赞阿根廷队门将

极目新闻
2026-07-20 09:36:53
瘦了瘦了!绝世天才状元!NBA最强禁区砍分高手

瘦了瘦了!绝世天才状元!NBA最强禁区砍分高手

篮球实战宝典
2026-07-19 20:35:08
王朔说:“中国有一个怪象:家里越是穷的,亲戚之间只在过年走动;家里越是富裕的,亲戚之间经常相互帮衬,家族越来越兴旺!”

王朔说:“中国有一个怪象:家里越是穷的,亲戚之间只在过年走动;家里越是富裕的,亲戚之间经常相互帮衬,家族越来越兴旺!”

谭老师地理大课堂
2026-07-16 01:52:23
已交班离岗仍被刑拘:2岁男孩“肠梗阻”死亡,医方被判一级甲等事故赔146万后,首诊医生被批捕丨医眼看法

已交班离岗仍被刑拘:2岁男孩“肠梗阻”死亡,医方被判一级甲等事故赔146万后,首诊医生被批捕丨医眼看法

医脉通
2026-07-19 18:40:42
斯卡洛尼:西班牙赢球实至名归,但我很想知道若没红牌会如何

斯卡洛尼:西班牙赢球实至名归,但我很想知道若没红牌会如何

懂球帝
2026-07-20 08:33:10
我们还会回到全民所有制吗?

我们还会回到全民所有制吗?

生命可以承受之轻
2026-07-19 10:59:03
10万入场费的“换妻”盛宴:记者冒死暗访,组织者3年狂赚2亿

10万入场费的“换妻”盛宴:记者冒死暗访,组织者3年狂赚2亿

说点事
2026-07-16 11:29:11
中创新航电池爆雷,小鹏、蔚来、小米、智己也有选用该品牌

中创新航电池爆雷,小鹏、蔚来、小米、智己也有选用该品牌

ZAKER新闻
2026-07-19 20:37:53
新冠再次爆发,可能不发烧!医生:出现7个症状,别犹豫赶紧就医

新冠再次爆发,可能不发烧!医生:出现7个症状,别犹豫赶紧就医

坠入二次元的海洋
2026-07-18 12:44:04
同样是1.5匹,为什么小米空调只要1800,格力却要3200元?

同样是1.5匹,为什么小米空调只要1800,格力却要3200元?

辉哥说动漫
2026-07-19 21:50:15
这下终于搞清楚了!李修贤这么讨厌周星驰的原因

这下终于搞清楚了!李修贤这么讨厌周星驰的原因

手工制作阿歼
2026-07-20 01:22:04
某二本院校录取线超清华8分!2026高考,考生集体“人间清醒”

某二本院校录取线超清华8分!2026高考,考生集体“人间清醒”

二宝妈妈谈教育
2026-07-16 17:18:26
确定了?人社部明确养老金调整目标,挂钩调整占比降至20%以下?

确定了?人社部明确养老金调整目标,挂钩调整占比降至20%以下?

白昼说故事
2026-07-20 09:07:39
何长工在关键时刻站错队,此后官越做越小,建国后也没能参加授衔

何长工在关键时刻站错队,此后官越做越小,建国后也没能参加授衔

云端小院
2026-07-20 08:19:33
脱离华为控制:M8只要19.98万

脱离华为控制:M8只要19.98万

白浅娱乐聊
2026-07-19 01:10:57
你是怎么发现亲戚见不得你好的?网友:买了新车,亲姑气的喝农药

你是怎么发现亲戚见不得你好的?网友:买了新车,亲姑气的喝农药

夜深爱杂谈
2026-07-19 20:43:19
看完阿根廷0-1西班牙!不得不承认5个事实,一场难看至极的决赛!

看完阿根廷0-1西班牙!不得不承认5个事实,一场难看至极的决赛!

田先生篮球
2026-07-20 07:00:24
费多罗夫回归!乌克兰“内讧”危机解除,一致对外成亮点

费多罗夫回归!乌克兰“内讧”危机解除,一致对外成亮点

项鹏飞
2026-07-19 20:32:57
57岁美国女子赴韩整形,术后骤减20岁:看着像37!

57岁美国女子赴韩整形,术后骤减20岁:看着像37!

娱圈观察员
2026-07-19 00:01:35
2026-07-20 11:12:49
Unity incentive-icons
Unity
Unity中国官方帐户
2488文章数 6735关注度
往期回顾 全部

游戏要闻

《堡垒之夜》泳装太色被限制!玩家调侃堪比《剑星》

头条要闻

媒体:赫格塞思要求测睾酮 难道嫌美军缺乏阳刚之气

头条要闻

媒体:赫格塞思要求测睾酮 难道嫌美军缺乏阳刚之气

体育要闻

西班牙捧起大力神杯 美国总统特朗普颁奖

娱乐要闻

王侃因病逝世 两年前与父亲牛犇同台

财经要闻

“国家队”护盘,稳市机制持续护航A股

科技要闻

中兴阶跃荣耀齐出手,AI手机争夺系统入口

汽车要闻

细节见真章 神行者8内饰首发体验

态度原创

亲子
艺术
数码
本地
公开课

亲子要闻

那些幼儿园里的小暖男!从小情商就这么高了?

艺术要闻

张大千:千万别学郑板桥题字

数码要闻

三星显示开始供应全球最亮笔记本OLED 面向多家PC厂商

本地新闻

十年了,为什么鬼怪CP还能让人美美嗑上?

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版