[项目实战]Unity即时战略游戏制作(上)



前言

在这个教程中我们将介绍如何利用Unity制作实时战略游戏。通常情况下,我们所有的事情都会解释的很清楚,保证每个五岁以上的人都能看懂^_^


为了保持尽量的简洁,我们将关注点放在实时策略游戏的几个基本方面:


  • 建造城堡

  • 制作&控制一个单位攻击敌人

  • 简单的敌人AI

这个教程最优美,最不可思议的地方在于它只有短短的270行代码!

哦,等等,还要一件事情:我们不需要其他复杂的3d建模工具。

条件

知识准备

本教程默认你已经拥有了基本的Unity知识。如果你对Unity还不是很了解,可以看看我们较早的unity教程例如Unity 2D 碰撞游戏。


如果你已经了解了unity的各个方面,就大可不必当心了。通常情况下我们涉及的知识都比较容易理解。没有可怕的数学内容。


美术风格

我们都喜欢玩像《帝国时代》这样百万制作的游戏,但是令人悲哀的是我们并木有这么的票子。我们只好使用特有的艺术风格使用Unity的GameObjects和基本的绘图工具例如Paint.Net。我们所需要的低分辨率的材质只由一些简单的像素组成,所有我们只需要用任何我们觉得用的舒服的绘图工具就可以了。


通常来说在简单的游戏中使用较少的颜色对我们来说是件好事情。在物体中我们主要使用橙色,白色和黑色,红色用于显示血条,地面用青色表示。这样给我们比较整洁的图形风格。


项目与场景设置


创建项目

双击Unity,选择New Project:


我们将它命名为rts,悬着其他本地磁盘例如C:\,选择3D然后点击Create Project:


然后我们通过File->Save Scene,保存当前的场景为“scene”(不需要“”)


摄像机


Unity会自动添加相机到工程中。如下图所示,我们在Hierarchy中选择摄像机,在Inspector分别修改Position和Rotation的值,让摄像机看向地面。

注意:我们还看不到任何东西,因为我们的场景还是空的。


灯光

Unity已经在我们创建场景的时候自动添加了Directional Light。让我们在Hierarchy直接选中它。然后分别如下图所示调整角度和灯光的设置:


注意:我们可以根据我们自己的需要设置这些属性,但上面这种设置在我们后面的游戏里看起来好些。


开始装满这个世界

现在所有的事情都准备就绪了,我们可以在场景里添加多种多样很酷的东西了。


地面

地面是一个简单的Unity Plane。我们可以通过在顶部菜单中选择GameObject->3DObject->Plane来创建它。我们将其命名为Ground并且在Inspector中调整它的缩放比例。


注意:取一个恰当的名字“Ground”是很重要的。

让我们给地面添加些颜色。首先我们可以通过我们选择的工具(例如Paint.NET)创建一个简单40x40的材质。


然后我们将其从Project区域中拖动到我们的Ground上:




展现给我们的效果是这样的:




这看起来相当的光滑,但是我们需要进一步的将其像素化,好让它能表现出一种更独特的风格。因此我们想要在Project区域里选择我们的材质,并且在Inspector中修改它的Import Settings:




现在的结果是这样的:



这种平滑的效果叫做插值法。通常情况下这是一种好的效果,但是对我们的像素游戏来说我们需要将Filter Mode设置值成Point,再将Format设置成Turecolor。

注意:我们需要为游戏里所有的材质进行这些设置。


建立3D模型

现在是时候为我们的游戏创建3D模型了。别担心,这里并不会用到CAD。我们通过Unity实现这一切。


技巧

在Unity的GameObject->3D Object菜单中我们可以创建一些基础的几何模型,例如球,立方体,平面和圆柱体等等:



我们将这些都放入一个空的GameObject中,命名并且将它保持为预制件(Prefab),只需要简单的将它拖到Project区域中就可以实现了(最好新建一个文件夹名为“Prefabs”)。


创建一个箭头

我们创建一个箭头用来射击,首先我们需要新建第一个空的GameObject来将所有的东西装入里面,点击GameObject->CreateEmpty创建,并将它命名为Arrow。然后点击GameObject->3DObject->Cube创建三个新的Cube把它放入Arrow中如图所示:



注意:Arrow被称为根节点,Cubes被称为子节点。

现在需要做的就是通过移动位置,调整角度,缩放大小这些操作,直到它看起来像一根箭头,我们可以根据下图所示进行设置:


箭头:


Cubes:




现在我们要为它添加一个简单材质:



注意:右击图片,选择Save As...将它保持到Assets/Textures文件夹中。

然后将它从Project区域中拖拽到每一个Cube上。最终的结果如下:


我们不需要在场景中总是显示箭头。所以我们需要将箭头GameObject保存成一个箭头预制件(Prefab)。更多有关于预制件的知识可以阅读相关预制件的教程。


为了创建预制件,我们可以在Project中创建一个Prefabs目录,将Arrow从Hierarchy中拖拽到文件夹:


现在我们可以将Arrow从Hierarchy中删除了。


城堡和弓箭射击物体

我们使用之前的方法统一创建我们的3d游戏模型。


有一件我们需要牢记的事情是所有的子GameObjects的坐标在某种程度上都要接近于(0,0,0),因为当一个GameObject为子节点时,它的坐标都是相对于父节点的。换句话说:如果子节点的x轴坐标是1,这就意味着它位于父节点x轴方向上1米远的地方,不论父节点现在身在何处。不管父节点如何移动,子节点总是跟随移动。


好的,让我们来用Cube创建一个城堡,每个Cube的位置如下图所示:
















用Cube创建作战单位每个Cube的坐标:













我们将城堡复制一份,并将它们分别命名为“CastlePlayer”和“CastleNpc”。同样的把作战单位也复制一份,分别命名为“ArrowShootingThingPlayer”和“ArrowShootingThingNpc”。随意给他们上一些颜色,如图所示:



注意:所有玩家的模型我们使用橙色和白色,所有Npc模型我们使用黑色和白色


这是是我们现在Prefabs文件夹的样子:



未完待续... 


行业如此火爆,高薪不是梦想。

学习游戏开发,进入高薪行业!

点击「阅读原文」报名免费课程

号主说

    如果你想详细学习游戏开发,我为你准备了非常详细的教程和学习资料,在本公众号后台回复「教程」,可直接获取下载地址。

  • 《Unity游戏设计与实现-南梦宫》后台回复「设计」下载,

  • 《3D数学基础:图形与游戏开发》后台回复「数学」下载

  • 《游戏改变世界》后台回复回复「改变」下载

  • 《Unity官方案例精讲》后台回复「案例」下载

    更多资料、更多问题请后台详聊小新新。


注:baidu网盘文件总是被删,我重新生成了链接,你们试试,再不行给我后台留言吧,我也很无奈啊~~

Unity3D游戏开发主程,入门游戏开发必备!

↑↑长按二维码关注

点击阅读原文报名U3D免费课程