• 周三. 4 月 22nd, 2026

物嫩软件资讯网

软件资讯来物嫩

Unity 4 3 制作一个2D横版射击游戏

admin@wunen

5 月 3, 2025

这是一个横版射击游戏。 教程来自:

http://pixelnest.io/tutorials/2d-game-unity/

中文版教程:

http://www.litpo.com/category/易学的教程/
教程文章已经详细地介绍实现过程,这里就不再复述,只做一些简单的笔记记录,以供备忘。


1.创建第一个场景

新建工程。接着在”

Project

“面板上创建如下文件夹:

接着在”

Hierarchy

“面板上创建多个空对象,形成以下结构:

这些空对象的

Position

保持为(0, 0, 0)即可。保存场景,名称为”

Stage1

“。


2.添加显示背景

将背景图片放入”

Textures

“文件夹,确认这张图片的纹理类型,即”

Texture Type

“属性为” Sprite”,如下图所示:

在场景中添加一个Sprite游戏对象,设置其”

Sprite

“属性为刚才导入的背景图片。重命名这个对象为”

Background1

“,将其移动到”

Level -> 0 – Background

“里面,设置其”

Position

“为 (0, 0, 0)。接着添加背景元素。导入平台图片到 ”

Textures

“文件夹,选中”

platforms

“图片,设置其”

Sprite Mode

“为” Multiple”,然后点击”

Sprite Editor

“,如下图所示:

在弹出的”

Sprite Editor

“窗口中,进行绘制每个平台的包围矩形,以便将纹理分割成更小的部分。然后分别命名为”

platform1

“和”

platform2

“,如下图所示:

创建一个新的 Sprite游戏对象,设置其”

Sprite

“属性为” platform1″。再在创建新 Sprite对象, 设置其”

Sprite

“属性为” platform2″。将它们放置到”

1 – Middleground

“对象里,并且确认它们的Z坐标为0。将这两个对象从”

Hierarchy

“面板拖动到”

Project

“面板下的”

Prefabs

“文件夹,保存成预制对象。接着,为了避免显示顺序问题,修改下游戏对象的Z坐标,如下所示:


Layer

Z Position
0 – Background 10
1 – Middleground 5
2 – Foreground 0

此时,点击”

Scene

“面板上的2D到3D视图切换,可以清楚看到层次:


3.创建主角和敌人

导入主角图片 到 ”

Textures

“文件夹,创建一个Sprite游戏对象,命名为”

Player

“, 设置其”

Sprite

“属性为刚才导入的主角图片。将此对象放入”

2 – Foreground

“层里,设置其

Scale

为 (0.2, 0.2, 1)。接着,为主角添加盒碰撞体组件,点击”

Add Component

“按钮,选择”

Box Collider 2D

“,设置其

Size

为 (10, 10),虽然这还是大于实际的区域,但已比图片小多了,如下图所示:

(可以通过按住Shift键,来调整绿色碰撞范围)
接着,再为主角对象添加”

Rigidbody 2D

“刚体组件,现在运行可以看到如下结果:

可以看到主角往下落了,这是因为刚体带有重力,但在这个游戏不需要用到,将”

Gravity Scale

“属性设为0即可。另外,不想因为物理而引起的主角旋转,则将”

Fixed Angles

“属性勾选上。完整的设置如下图所示:


开始准备让主角移动。在”

Scripts

“文件夹里,创建一个C#脚本,名称为”

PlayerScript

“,实现让方向键移动主角,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34
using UnityEngine;

/// <summary>

/// Player controller and behavior

/// </summary>

public  class PlayerScript : MonoBehaviour

{

/// <summary>

/// 1 – The speed of the ship

/// </summary>

public Vector2 speed =  new Vector2( 50,  50);

// 2 – Store the movement

private Vector2 moveme

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注