[Unity]《太空射击》开发日记Ep.1(入门篇)

前言

这次呢,又接到一个“个人开发一个独立项目”的大作业。我毅然决然选择了做一个休闲小游戏(毕竟这是我的爱好吧),时间大概是3周左右。于是想到来这里记录整个心路历程(摸打滚爬)。

新建

所用版本:Unity 2018.2.4f1,Microsoft Visual Studio Community 2015
要新建一个项目。
项目名:IcySpaceShooter
模式:2D
弄个最舒服的窗口布局。
在这里插入图片描述
可以拖动标签来调整布局,并且通过Window>Layouts>Save Layouts还可以保存当前布局。
想做一个俯视视角、又在一个正方形区域游玩的小游戏。
Edit>Project Settings>Player>Resoluton and Presentation
FullScreen Mode:Windowed
Default Screen Width:1024
Default Screen Height:1024

素材

主角是一架飞机…飞机好难做啊,就一个正方形吧
Project里面来管理我的游戏文件们,我们就在目录下新建一个Sprites文件夹吧。
Sprite在2D游戏中是精灵的意思,指一个游戏实例,而叫Sprite的文件夹是用来管理精灵们的图片素材。
在这里插入图片描述
我随即右键单击了新文件夹SpritesCreate>Sprites>Square得到了一个叫Square的小白。从Inspector窗口知道,他是一个4x4的白色正方形。还有个控制尺寸的属性:Pixels Per Unit .我把它设置为16。并且重命名为sprPlayer
Pixels,像素,是图像中的单位。
Unit是Unity中的单位长度,Scene窗口里的网格线就是以1 Unit为单位绘制的。
Pixels Per Unit就代表这个图片在游戏中的默认显示比例,值越大图片将越小。

先从第一种敌人开始吧…也做成正方形好了
继续在Sprites文件夹下新建,还是改那几个熟悉的属性:
名字:sprEnemy1
Pixels Per Unit:32(这样敌人比主角小一点)
为了更有一点区分度,在画图软件里把敌人的图片改成红色。
Enemy1虽然攻击方式简单,只是漫无目的的直线飞行,但凭借他们庞大的数量,很多时候也是个让人头疼的对手。
两个基本素材就这么做好了!
在这里插入图片描述

精灵

光有一张图片不行,迟早要做成游戏里的实例
我们在Hierarchy窗口右键,2D Project>Sprite得到一个新的精灵。每当我们在此新建时,一定要做这两步:

  • 重命名(这里我们命名Player)
  • 点击Inspector下的Transform标签的小齿轮,找到Reset来初始化坐标(尽管之后会改变)

Player的Sprite还是’None’,那就把sprPlayer拖到Player的Sprite中。
可以在Game窗口看到他现在这个中规中矩的大小。
在这里插入图片描述
之后用同样的方式来做Enemy1

脚本

我该如何控制主角呢
到这里就需要一定的编程基础了,因为Unity的脚本是用C#来实现的。
首先要在Unity中创建脚本文件,我们再次回到Project窗口,新建一个叫Scripts的文件夹,用来存放我们在游戏中用到的脚本们。
我们的第一个脚本叫做playerMoveController——在新的文件夹中右键Create>C# Script即可创建一个默认脚本。随后双击打开,Unity会提示“启动VS中”(所以没安装VS的赶紧啦)
在VS中可以看到,这个脚本实际上就是一个类。
一般玩家都习惯用WASD和方向键来控制上下左右。
我们就插入下面这段代码:

public class playerMoveController : MonoBehaviour
{
    public float moveSpeed;
    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
        {
            transform.Translate(Vector2.up * moveSpeed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
        {
            transform.Translate(Vector2.down * moveSpeed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
        {
            transform.Translate(Vector2.left * moveSpeed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
        {
            transform.Translate(Vector2.right * moveSpeed * Time.deltaTime);
        }
    }
}

代码说明:
1.moveSpeed用来调整运动速度。
2.Update()是一个每帧都调用的函数,这个脚本每帧都会检测WASD或方向键是否被按下,如果是的话,就做出相应方向的坐标变换。
3.Time.deltaTime:表示1帧的时间。

组件

要告诉Unity谁来使用这个脚本,可是要怎么告诉呢
保存脚本回到Unity,点击刚刚创建的精灵Player,把playerMoveController拖到Inspector中,可以看到新增了我们自定义的组件Player Move Controller,并且神奇的出现了一个"Move Speed"——和代码中的moveSpeed相对应。现在Player就会运行脚本中的代码了。
在这里插入图片描述
在脚本中自定义的类成员是可以在Unity中进行赋值的。
现在点击顶部的播放键,就可以看到预览版啦,记得用键盘操作一下!
在这里插入图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值