2D Game Creation - 2D游戏开发基本流程

版权声明: https://blog.csdn.net/Ha1f_Awake/article/details/85164687

主要内容

1. 设置2D环境

2. 设计游戏背景

3. 设计角色活动的前景空间

4. 设计角色

5. 设置摄像机跟踪角色

6. 完善玩法细节

7. 构建游戏


 

1. 设置2D环境

设置2D工作环境是开始游戏项目的第一步。

设置方式有两种:

1)新建项目时,在下拉菜单Template选定2D

2)游戏开发过程中,在Edit/Project Settings/Editor中调整Default Behavior Mode

设置工作环境后,导入的新图片素材的材质类型会默认Sprite,而不是Texture,场景视图(the scene view)也会预设为2D。

2D模式中采用完全的正视图视角来呈现2D游戏,同时隐藏右上角的Gizmo(小辅助工具)。

2. 设计游戏背景

1)在Photoshop中勾勒关卡雏形,设计出每个图层

2)将这些图层导入到Unity,在Inspector窗口中将Texture Type设为Sprite

3)为了呈现出背景的视差,可以将背景元素放在命名为“Background”的Sorting Layer中:

1. 通过Edit/Project Settings/Tags & Layers打开Sorting Layers创建排列层并调整它们的位置

上图为常用的Sorting Layers:Background(背景层),Character(角色层),Foreground(前景层)和UI(用户界面层)。

Sorting Layers的顺序并不是随意的,排列层的编号越大,显示的位置越靠前,所以前景层应该设定在背景层下面

为什么呢?

因为渲染(Rendering)顺序是从编号0的排列层开始,先被渲染,就先被铺在下面一层。

2. 将所有背景元素安排到Background

3. 再通过精灵渲染器(Sprite Renderer件)Order in Layer给它们在Background层上排序

4. 设置好后,在Layer中将Background锁定,这样就可以避免在编辑前景元素时移动背景元素

4)由于背景元素仅用于装饰,不需要其他组件,所以可以把它们放在一个空对象中,并在空对象中放入命名为Background Parallax的脚本来处理视差

3. 设计角色活动的前景空间

每一个前景元素都需要碰撞体(Collider)来让角色与其发生接触。

Unity提供的多边形碰撞体(Polygon Collider)可以根据图片外形自动产生多边形碰撞体,而且用户可以通过增加、移动或删除节点来调整碰撞体的外形。

为了区别可接触的前景元素和不可接触的前景元素,需要创建两个功能层来将它们分类放入

官网关于Layers(功能层)的描述:

file:///D:/Unity2018.1.8/Editor/Data/Documentation/en/Manual/Layers.html

4. 设计角色

1)在Photoshop中设计角色形象。考虑到角色在游戏中并不是一个静止的图像,所以在设计时就要构思如何为角色制作动画(Animation)。在2D游戏中,角色动画一般有两种实现方式:

1. 将角色身体的各部分分开设计,单独运动,继而达到全身运动的效果

2. 画出角色动画的每一帧,连续播放以达到运动的效果

2)若采用第二种方式,直接将Idle(待机)状态的角色图片拖入场景即可(自动生成GameObject);若采用第一种方式,先为每个部分单独建立一个GameObject,然后将图片放入,

再新建一个空对象(这里命名为Ellen),使角色的身体各部分成为Ellen的子对象。

最后将Ellen拖入场景,并调整身体各部分的位置。

3)角色身体的各部分放入建好的Character排列层中,然后改变z轴的深度来改变显示的前后顺序。(也可以在Sprite Renderer中改变Order In Layer的参数)

4)在Ellen中添加碰撞体(Collider 2D)刚体(Rigidbody 2D)音频(Audio Source)动画控制器(Animator)控制脚本攻击脚本等等。角色设定好后就可以到Animation窗口中设计每一节点的图画,建立待机Idle、跑Run、跳Jump、射击Shoot和死亡Death等的动画,并在动画控制器(Animator)中建立这些动画之间的联系。

5)如果角色的运动不由脚本控制,而是根据动画来位移,则勾选Apply Root Motion,否则不用勾选。

使用Animator控制动画动态的最大好处是可以调整动画速度来搭配物理速度,不需要作额外的判定。

6)让角色移动,需要给角色添加Ridbody 2D组件。同时我们也要根据输入的水平值是大于0或小于0来判断角色的面向方向。在Unity中,按左键会传回-1,按右键会传回+1

5. 设置摄像机跟踪角色

MainCamera(主相机)中添加CameraFollow脚本。

/*-----------跟随拍摄-----------*/

    public GameObject player;   /*角色的引用*/
    
    private Vector3 offset;     /*因为相机和主角不在一个平面,需要三维向量确定距离*/


	void Start () {

        offset = transform.position - player.transform.position;    /*记录相机和主角的初始落差(距离)*/

	}


/*LateUpdate函数在所用Update函数调用之后执行,跟随游戏对象的相机必须要放在这个函数里,因为游戏对象可能在Update函数里发生位置的变化*/

	void LateUpdate () { 

        transform.position = player.transform.position + offset;    /*根据初始距离计算位置*/
	}

也可以使用良心到让人发指的Cinemachine点击穿越)。

6. 完善玩法细节

出发角度包括:脚本、动画、粒子系统、BGM、与游戏角色发生交互的预制体等。

7. 构建游戏

File/Build Settings…

Build Settings窗口包括将在构建中被包含的场景列表(Scenes in Build)、可用平台列表(Platform)以及当前选择平台的设置。窗口底部是平台切换按钮(Switch Platform播放器设置按钮(Player Settings),以及构建(Build)和构建并运行(Build and Run)按钮。

Scenes in Build:场景列表包括所有在构建中被包含的场景,Unity在构建游戏时将忽略未在场景列表中的场景。如果场景列表是空的,Unity将构建一个可执行文件,但只会使用当前打开的场景。列表中场景的顺序不同会影响游戏的运行效果。

Platform:在开始一个项目之前,我们应该选择我们打算针对的目标平台。当前选择的目标将直接影响Unity如何处理项目的关键方面,例如导入资源。切换目标平台将影响整个Unity编辑器中的许多设置。为多个目标建立一个代码库是可能的,通过一些技术就能实现,例如平台相关的编译。


路过的圈毛君:“安利一个B站的视频 https://www.bilibili.com/video/av3246302 

猜你喜欢

转载自blog.csdn.net/Ha1f_Awake/article/details/85164687
2D