【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】带你制作一款类似于金山打字的小游戏 的相关文章

  • UE4 解决景深效果闪烁问题

    原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
  • FBX导入Unity中模型没有材质的处理

    一 3dMax导出FBX时的注意事项 导出时 确保maps文件存在 里面放着fbx用到的image 二 在Unity中的设置 1 文件拖入Unity的Assets文件夹中 2 查看模型的材质是否存在 如下所示 材质为None 此时拖入sce
  • Unity动画控制器animator.CrossFade

    需要特别注意 1 CrossFade虽然可以不用任何逻辑来链接而直接跳转 但是CrossFade只能覆盖其他动画 当当前动画播放完毕而没有跳出这个动画时再次调用CrossFade将会失败 造成动画依旧停在原位 参数animator Cros
  • Unity中UI框架的使用1-添加面板、显示Loading页面

    其中BasePanel和Canvas都是挂在面板的预制物上的 1 导入我们的UI框架 本篇文章中有用的是两个UIPanelType NUIManager和NBasePanel 会放在文章最后供大家使用 2 先将我们做好的Panel设置成预制
  • Unity学习笔记(一)—— 基础知识

    一 基础知识 1 开发团队组成 2 unity特点 图形界面 所见即所得 入门简单 支持C 比OC C 更友好 js 国内外资源丰富 因为使用的人多 跨平台性好 PC端 移动端等 对VR AR的支持最完善 3 成功案例 游戏 炉石传说 神庙
  • unity: C#的Action Event Delegate的异同

    目录 一 Action 二 Event 三 Action和Event区别 四 Delegate 总结 Action Event Delegate的异同 前言 Action Event和Delegate都是C 语言中的重要概念 分别用于管理函
  • VLC for unity 插件如何使用

    VLC for unity 插件如何使用 先去下载一个VLC播放器 安装完成后 然后导入插件链接https download csdn net my 这个插件我的另一个上传资源里有 或者到商店去下载 这个插件链接下载完是一个txt文档 里面
  • 【Unity】按Esc进入操作菜单

    本文章是基于如下视频的自我总结 https www youtube com watch v JivuXdrIHK0 步骤如下 1 在Canvas 界面添加一个Panel Panel中添加一个按钮 调整按钮的大小为合适大小 调整字体的大小为合
  • Unity保存图片到相册

    Unity保存图片到Android相册 Java 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
  • unity实现鼠标右键控制视角

    主要实现的功能是相机跟随主角 鼠标右击移动后 相机的视角会旋转 思路 在主角里创建空的子物体 把相机绑在空物体上 通过旋转空物体来实现视角的旋转 要把相机调整到适当位置 代码如下 public float rotateSpeed 100 设
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • unity3d image组件不显示

    需要将UI组件放到画布下面
  • 【原神游戏开发日志1】缘起

    原神游戏开发日志1 缘起 版权声明 本文为 优梦创客 原创文章 您可以自由转载 但必须加入完整的版权声明 文章内容不得删减 修改 演绎 相关学习资源见文末 大家好 最近看到原神在TGA上频频获奖 作为一个14年经验的游戏开发行业的老兵 我就
  • 【Unity】如何让Unity程序一打开就运行命令行命令

    背景 Unity程序有时依赖于某些服务去实现一些功能 此时可能需要类似打开程序就自动运行Windows命令行命令的功能 方法 using UnityEngine using System Diagnostics using System T
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • U3D游戏开发中摇杆的制作(NGUI版)

    在PC端模拟摇杆 实现控制摇杆让玩家或者物体移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine public clas
  • 游戏开发创建操作之玩家信息系统的建立

    游戏一般都需要玩家信息系统 那么我们应该如何搭建玩家信息系统 接下来我将展示一种简单的方法 完整代码如下 using System Collections using System Collections Generic using Uni
  • 游戏开发常用实践操作之按动任意键触发

    接下来一些笔记会对于一些大大小小的实践操作进行记录 希望对你有所帮助 在游戏中 我们经常会遇到一些按动任意键触发的操作 接下来展示核心代码 以下是对于Unity中的操作 使用的UI是NGUI 对于核心操作没有影响 你可以自己置换 void

随机推荐

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