【Unity2d】带你制作一款类似于金山打字的小游戏

2023-11-19

       博主大概08年开始接触电脑游戏,当时玩的是我哥的电脑,那时候家里没网,只可以玩电脑上自带的单机游戏,比如扫雷、蜘蛛纸牌等等,当然还有红色警戒、冰封王座、星际争霸、帝国崛起等等,这些大概是我哥当时在大学下载的,也是那个时候对游戏充满了兴趣,记忆很深刻那时候电脑上还有一款金山打字游戏,今天准备带大家来复刻一下这款游戏。

       我们先来理一下思路,制作一款这样的游戏需要实现哪些功能,当然如果你没有玩过金山打字可以去各大视频网站先看一看。第一,实现字母下降速度随机;第二,随机区域生成随机字母;第三,当我们按下字母,字母销毁,没有按到,超出下界自动销毁;其他功能还包括:计分器、定时器、暂停菜单、音效等等,下面主要介绍实现主要功能的过程。

       第一步,准备素材,包括背景图片(根据自己喜好)、字母样式(博主使用的是Asset Store免费素材105 Colorful 2D Planet Icons,找出26张图片,借助Photoshop,依次给每个图片P上26个字母,当然为实现功能,可以先拿3张图片,后续再进行添加),音效(根据自己在Asset Store下载即可)等等,新建文件夹,重命名,将素材导入unity,可以直接托人或者在项目文件存入,图片需修改Texture Type为Sprite(2D and UI),Pixels Per Unit设为188较为合适,如下图。

       第二步,创建精灵 (GameObject > 2D Object > Sprites > Square ) ,将字母素材拖入Sprite Renderer中,注意:为了和背景区分图层,后续字母的图层排序都要大于背景图层,为了后续不搞混淆26个字母,建议重命名GameObject为相对应的字母。

        第三步,给字母贴代码,新建C#文件,重命名为AlphabetController,双击打开cs文件,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class AlphabetController : MonoBehaviour
{
    public float speed;//定义下落速度
    public string alphabet;//定义字母
    public static int score = 0;//定义得分,静态变量,方便调用
    // Start is called before the first frame update
    void Start()
    {

        //speed = Random.Range(0.8f, 1.5f);//简单,随机速度生成
        speed = Random.Range(3f, 5f); ;//中等,随机速度生成
    }
    
    // Update is called once per frame
    void Update()
    {
        transform.Translate(Vector3.down * Time.deltaTime * speed);//下落
        if (Input.GetKeyDown(alphabet))//判断是否按下字母
        {
            Destroy(this.gameObject);//销毁字母
            score++;//得分+1
        }
        if (transform.position.y < -3.5f)//判断是否超出下界
        {
            Destroy(this.gameObject);//销毁字母
        }
    }
}

       第四步,在(Inspector)检视面板初始化字母,注意:上述代码判断只能识别小写字母,如下图,接着新建一个文件夹,重命名为Perfabs,用于存放预设体,将字母物体拖入文件内,即可生成预设体,重复以上操作,生成多个字母预设体,生成预设体后,可以删除层级面板的字母物体。

       第五步,创建一个空物体(GameObject > Creat Enpty) ,新建C#文件,重命名为GameController,用于管理游戏,双击打开cs文件,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class GameManager : MonoBehaviour
{
    public GameObject[] card;//用于存放26个字母预设体
    private float timer = 0;//定时器
    public Text[] text;//用于存放计分器和定时器文本
    public int count = 30;//定时器初始数字
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        timer += Time.deltaTime;
        if (timer > 1.5f)//生成字母时间间隔
        {
            CreateCard(Random.Range(0, card.Length));//随机生成字母
            timer = 0;
        }
        Text();
        Timing();
    }
    private void CreateCard(int index)//创造字母
    {
        float x = Random.Range(-4.5f, 4.5f);//定义横向生成区域
        float y = Random.Range(1f, 4.5f);//定义纵向生成区域
        Instantiate(card[index], new Vector3(x, y, 0), Quaternion.identity);//函数生成字母
    }

    public void Text()//计分器
    {
        text[0].GetComponent<Text>().text = "得分:" + AlphabetController.score; //显示
    }

    private float nextTime = 1;
    private void Timing()//定时器
    {       
        if (Time.time >= nextTime)
        {
            count -= 1;
            nextTime = Time.time + 1;
        }
        if (count <= 0)//游戏结束
        {
            Time.timeScale = 0f;//运算时间处理变为0
        }
        text[1].GetComponent<Text>().text = "倒计时:" + count;//显示
    }

}

       第六步,在检视面板将字母预设体一个一个拖进Card,Text同理(记得先新建两个text),这样,一个类似于金山打字的小游戏就做好了,运行即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Unity2d】带你制作一款类似于金山打字的小游戏 的相关文章

  • 机器学习之朴素贝叶斯

    机器学习之朴素贝叶斯 1 朴素贝叶斯 2 朴素贝叶斯应用 3 代码实现贝努力朴素贝叶斯 4 代码实现高斯朴素贝叶斯 5 代码实现多项式朴素贝叶斯 6 总结 前言 主要介绍朴素贝叶斯的概念 公式 以及代码实现贝努利 高斯 多项式朴素贝叶斯 1

随机推荐

  • PyQt6 Designer与实际运行不一致问题

    我们在Designer设计布局时 会先定义好布局然后只在某个布局内存放元素 其他布局为空 可能就会产生布局不一致问题 其实已经存在了对应的布局只是里面为空 所以剩余空间优先被有元素的布局使用 我们在每个布局中加入某个组件即可解决
  • VC++ CMemDC类的扩展(新版)

    上一版本链接 https blog csdn net u012156872 article details 103755254 测试过程中发现存在问题 于是进行了功能补充 源码实现 CSWMemDC h pragma once namesp
  • vant + moment插件自定义count-down倒计时

    根据vant官网https vant ui github io vant v2 zh CN按需引入找到倒计时 自定义时间格式参考下图
  • matlab2016b版本安装

    安装包下载地址 链接 https pan baidu com s 1RrUp8TBIa7g7mhfSUtqAsg 提取码 foc1 1 解压文件包 2 在 matlab R2016b 64bit 文件下 找到 setup 文件 右击选择 以
  • 【C++】_5.模板

    目录 1 泛型编程 2 函数模板 2 1 概念 2 2 函数模板格式 2 3 函数模板原理 2 4 函数模板的实例化 2 5 函数模板的匹配原则 3 类模板 4 非类型模板参数 5 模板的特化 5 1 概念 5 2 函数模板特化 5 3 类
  • 解析request.getParameter() 和request.getAttribute() 区别

    一 request getParameter 和request getAttribute 区别 1 request getParameter 取得是通过容器的实现来取得通过类似post get等方式传入的数据 request setAttr
  • django高并发部署

    django高并发部署
  • React解密:React Hooks函数之useCallback和useMemo

    之所以将useCallback和useMemo放到一起 从某种意义上说 他们都是性能优化的始作俑者 他们也有很多的共性 我们先来回顾一下class组件性能优化的点 调用 setState 就会触发组件的重新渲染 无论前后 state 是否相
  • 64位系统树莓派部署yolo-fatestv2---超多坑

    最近在研究yolo fastest 开始面对作者大大的一堆部署的指令在pycharm的终端里面一顿操作 然后一路报错 后来才发现原来都是linux的指令 后来在虚拟机上也尝试部署过 成功之后本来想直接挪到树莓派上 但是尝试许久都以失败告终
  • mysql修改权限

    mysql权限 显示用户权限 mysql gt show grants for jeffrey localhost 一般 数据库管理员首先建立用户 定义其非特权特征 例如其密码 是否使用安全链接以及对服务器资源的访问限制 而后使用grant
  • java枚举类的定义和使用

    开始时间 2018年8月11日11 04 35 结束时间 2018年8月11日12 30 37 累计 1小时 枚举类的对象是有限个 对象个数 一个可以看做单例模式的实现 多个 为枚举类 1 如何定义 cccccccc 1 私有化类的构造器
  • 服务器虚拟化解决方案

    根据以往经验推断 一台主流双路 PC 服务器可以承担 3 6 个应用系统在其 上运行 本期项目总共有 N 个业务系统 考虑到硬件资源需具备一定的冗余能 力和实现高可用 HA 在线迁移 动态调度 后期扩展等诸多因素 推荐 2 台双 路 PC
  • 智能指针 -- unique_ptr

    源码分析 源码链接 gcc unique ptr h at master gcc mirror gcc GitHub 上面链接中的源码是unique ptr的完整定义 我们来简化其类结构看看 template
  • Android基础面试常常死在这几个问题上,小白也能看明白

    前言 疫情一过 我相信将会是面试求职的高峰时期 如果此时手里有份高质量的面试宝典 那么你将得心应手面对考官各种问题 虽然不敢保证你能应聘上心仪的职位 但是能保证看完这些内容你的收获将超乎你的想象 此份面试宝典搜集各大网络平台 如果侵权 请您
  • 【黑叔说】之《进阶必备知识》(一)

    前言 每天一分钟 通勤跟我学 进阶知识点 系列的知识 来自互联网 由黑叔总结或改编 仅供参考 一 前端模块化 二 webpack简易版实现 function modules function require fileName const f
  • 单片机流水灯C语言实验报告,单片机LED灯实验报告.doc

    桂林电子科技大学 实验报告 2016 2017 学年第一学期 开 课 单 位 海洋信息工程学院 适用年级 专业 14级机械 课 程 序 号 BS1615000 03 课 程 代 码 BS1615000 实 验 名 称 流水灯 流水灯实验报告
  • 6种方法计算神经网络参数量Params、计算量FLOPs、Macs简单代码

    方法1 统计模型参数量 total sum param nelement for param in model parameters print Number of parameter 2fM total 1e6 方法2 统计flops和参
  • Python——报数出圈

    编写程序 模拟报数游戏 有n个人围成一圈 顺序编号 从第一个人开始从1到k 假设k 3 报数 报到k的人退出圈子 然后圈子缩小 从下一个人继续游戏 问最后留下的是原来的第几号 n int input 请输入总人数 n k int input
  • 解决JavaScript中new Date(string)在IE不兼容的问题

    1 问题描述 let date 2018 09 17 let dateStr new Date date let year dateStr getFullYear let month dateStr getMonth 1 let day d
  • 【Unity2d】带你制作一款类似于金山打字的小游戏

    博主大概08年开始接触电脑游戏 当时玩的是我哥的电脑 那时候家里没网 只可以玩电脑上自带的单机游戏 比如扫雷 蜘蛛纸牌等等 当然还有红色警戒 冰封王座 星际争霸 帝国崛起等等 这些大概是我哥当时在大学下载的 也是那个时候对游戏充满了兴趣 记