Unity入门项目——汽车控制器设计
1、Unity简介
Unity是一个广泛使用的游戏开发引擎,由Unity Technologies开发,用于创建2D和3D游戏以及交互式内容。Unity的关键特点包括:
- 跨平台支持:Unity允许开发者一次开发,多平台发布。支持的平台包括Windows、macOS、Linux、iOS、Android、WebGL、各种游戏主机以及VR/AR设备。
- 易用的编辑器:Unity提供了一个直观的用户界面,使得游戏开发更加高效和易于上手。它包括场景设计工具、资产管理工具和强大的脚本编辑功能。
- 强大的脚本能力:Unity使用C#作为其主要脚本语言,允许开发者轻松实现复杂的游戏逻辑和界面。
- 丰富的资源库:Unity Asset Store提供了大量资源,包括模型、纹理、音效、脚本和教程,帮助开发者加速游戏开发过程。
- 物理和光照系统:Unity拥有先进的物理引擎和光照系统,可以创造逼真的游戏环境和动态效果。
- 社区和支持:Unity拥有庞大的开发者社区,提供丰富的教程、论坛讨论和支持服务,帮助开发者解决遇到的问题。
Unity广泛应用于游戏开发,同时也被用于建筑可视化、仿真训练和其他交互式媒体领域。由于其强大的功能和灵活性,Unity成为了初学者和专业开发者都非常青睐的工具。
2、其他游戏引擎
除了Unity,一些知名的Unity替代品:
- Unreal Engine:由Epic Games开发,是Unity的主要竞争对手。它以其高质量的图形和视觉效果著称,非常适合制作AAA级游戏。Unreal Engine使用C++和蓝图可视脚本系统。
- Godot Engine:一个开源的游戏引擎,以其轻量级和易用性著称。Godot支持2D和3D游戏开发,并使用自己的脚本语言GDScript,同时也支持C#和C++。
值得注意的是,Godot的安装包非常小(仅有50M),而且不需要额外的许可费用。 - Cocos:一款面向移动端游戏开发的开源游戏引擎,支持多平台,提供丰富的功能和工具,适合开发2D和3D游戏。Cocos支持Lua、JavaScript和C++等多种脚本语言。
这个软件有点貌似假开源,并且有一些商业化的操作,商业化的数字人、自动驾驶平台开发服务看起来很不错。 - GameMaker Studio:特别适合2D游戏开发,以其简单的拖放界面和自己的脚本语言GML(GameMaker Language)受到独立游戏开发者的喜爱。
- CryEngine:以其先进的图形和物理效果而闻名,是一个强大的游戏开发工具,适用于制作高端游戏。它使用C++和Lua脚本语言。
- RPG Maker:专门用于制作角色扮演游戏(RPG)。它提供了一套易于使用的工具和资源,使得非程序员也能创建游戏。
- Construct:一个适合初学者的HTML5游戏创建工具,以其直观的可视编辑界面和不需要编程知识的特性而受欢迎。
- Amazon Lumberyard:一个免费的AAA游戏引擎,由亚马逊开发。它基于CryEngine,但加入了对AWS(亚马逊云服务)和Twitch的集成支持。
3、Unity安装
Unity提供了免费的个人版,可以在Unity官网下载安装。Unity支持Windows和macOS操作系统。
4、Unity建模流程
4.1、项目结构
Unity项目常见的组织结构如图下:
Assets:这是Unity项目中最重要的文件夹。它包含了所有的游戏资源,如场景(Scenes)、脚本(Scripts)、3D模型、纹理、音频文件等。通常,这个文件夹会进一步细分为子文件夹,以便更好地组织资源。
- Scenes:场景文件夹通常位于Assets文件夹内。一个场景可以视为游戏中的一个级别或环境。在Unity中,你可以同时拥有多个场景文件,分别代表游戏的不同部分。
- Scripts:这个文件夹存放游戏的脚本,通常是C# (.cs) 文件。脚本用于定义游戏的逻辑和行为。
- Materials, Textures, and Models:这些文件夹分别用于存储材质(Materials)、纹理(Textures)和3D模型(Models)。它们是游戏视觉设计的关键部分。
- Animations:动画文件夹用于存储角色或对象的动画。
- Audio:用于存放游戏的音频文件,如背景音乐和音效。
- Plugins:插件文件夹用于存放Unity项目可能依赖的第三方库和插件。
Prefabs:预制件(Prefabs)是可以在多个场景中重复使用的游戏对象。它们可以包括一组组件,如网格、碰撞体、脚本等。
ProjectSettings:这个文件夹包含了Unity项目的设置文件,如图形设置、输入设置、音频设置等。这些设置会影响整个项目。
Library:这个文件夹是Unity自动生成的,用于存储项目的元数据和缓存。通常不需要直接修改这个文件夹中的内容。
Build:虽然不是默认生成的文件夹,但通常会创建一个用于存放项目的编译版本。
4.2、界面介绍
Unity的界面如下:
Scene View(场景视图):
- 这是你的3D场景的主视图,在这里可以放置和操作游戏对象。
- 提供了一系列工具来移动、旋转和缩放对象。
- 可以切换不同的视角,如正视图、俯视图等。
Game View(游戏视图):
- 显示的是从摄像机角度看到的游戏实际运行时的样子。
- 可以用来测试和预览游戏。
Hierarchy(层级):
- 列出了当前场景中所有的游戏对象。
- 可以用来选择、查找和组织对象。
Inspector(检视器):
- 显示并允许编辑选中对象的属性和附加组件。
- 可以用来调整对象的变换属性(位置、旋转、缩放),以及编辑脚本、材质等。
Project(项目):
- 显示项目中的所有文件和资源。
- 这里可以组织和管理你的脚本、3D模型、音频文件等资源。
Toolbar(工具栏):
- 位于界面顶部,提供了一系列快捷工具,如播放、暂停和前进游戏。
- 包括用于场景编辑的变换工具(移动、旋转、缩放)。
Console(控制台):
- 显示游戏运行时的日志信息、警告和错误信息。
- 对于调试游戏非常有用。
4.3、插入预制件(Prefabs)
免费车辆模型可以从ARCADE: FREE Racing Car | 3D 汽车 | Unity Asset Store下载,然后导入到Unity中,在Assets\ARCADE - FREE Racing Car\Prefabs (Meshes Only)
中选中车辆,拖进层级(Hierarchy)窗口中,右键对预制件(Prefabs)完全解压缩。
然后就可以对车辆模型进行自定义编辑。
4.4、添加组件
在检查器中为Car添加Rigidbody
、Box Collider
等组件,并且在inspector
设置合适的属性参数。
4.4、添加控制器
在Assets
路径下新建Scripts
文件夹,在其中新建CarController
的C#脚本,在VS中编写控制器代码。
4.5、添加摄像头
在GameObject
中通过align with view
将摄像头对齐到当前场景中的界面。
为了在汽车运动过程中更好的观测车辆运动,我们可以通过添加脚本使得摄像头跟随车辆。
4.6、添加跑道和障碍物
可以通过添加贴图,使场景更为逼真。
或者通过Blender进行建模,然后倒入Unity。
5、参考资料
- 本项目参考了Youtube上的视频教程:(426) Simple Car Controller in Unity Tutorial - YouTube
- 有UP将视频搬运到了Bilibili:
该项目的源代码可以在Github上找到:GameDevChef/CarController: Tutorial project for car controller in Unity (github.com)
该Youtube视频博主的另一个视频也比较有参考价值,搭建了一个AI驱动的赛车游戏:I Made a Racing Game AI Using Machine Learning and Artificial Neural Networks. (youtube.com)
- 为了方便下载,所有的材料上传到了百度网盘:
链接:https://pan.baidu.com/s/1BkkR-p3q5Oxr6AbTAxNK1g?pwd=v6qz
提取码:v6qz