900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【Unity3d】带你制作一款类似于金山打字之生死时速的小游戏

【Unity3d】带你制作一款类似于金山打字之生死时速的小游戏

时间:2021-06-22 11:09:28

相关推荐

【Unity3d】带你制作一款类似于金山打字之生死时速的小游戏

上篇文章博主介绍了如何制作一款类似于金山打字的2d小游戏,最近看到了金山打字之生死时速的玩法,决定来复刻一下,还是先分析一下我们要实现哪些功能,第一,打字和小球运动要保持同步进行;第二,小球能够实现距离移动和转向;第三,我们要给定英语句子文本内容;第四,设置打字跟随方便玩家。制作过程如下(申明,未经作者允许禁止转载):

第一步,地图搭建,博主搭建的如下图,素材取自Asset Store的Free Low Poly Nature Forest,搭建一个闭环的赛道即可,为和博主下述代码尽量契合,建议搭建一个矩形闭环赛道,图中红色小球为控制角色。

第二步,给小球贴代码,新建C#文件,重命名为PlayerController,双击打开cs文件,代码如下:

using System.Collections;using System.Collections.Generic;using System.Drawing;using UnityEngine;using UnityEngine.UI;public class PlayerController : MonoBehaviour{public Transform trans;//获取Transformpublic Text[] text;//获取文本,包括英语句子文本和计时器文本public int index = 0;//数组脚标public string EnglishSentence, alphabet;//英语句子,转化public float distance;//小球移动距离public int count = 0;//计时器初始化// Start is called before the first frame updatevoid Start(){text[0].text = EnglishSentence;//将英语句子内容和文本绑定}// Update is called once per framevoid Update(){MoveMent();if (index == 0)//初始化打字跟随标记{text[0].text = "<color='#0057FF'>▶</color>" + EnglishSentence.Substring(0);}if (index == 1)//初始化打字跟随标记{text[0].text = EnglishSentence.Substring(0, 1) + "<color='#0057FF'>▶</color>" + EnglishSentence.Substring(1);}Timing();}void MoveMent(){alphabet = EnglishSentence.ToLower();//将大写转化为小写//alphabet = EnglishSentence.ToLower().Replace(" ", "");//去掉空格if (Input.GetKeyUp(alphabet[index]+""))//判断是否按下指定字母{//text[0].text = "<color='#FFFFFF'>" + EnglishSentence.Substring(0, index + 1) + "</color>" + EnglishSentence.Substring(index + 1) + "</color>"; //字母颜色跟随,此次存在问题,已注释,后续采取标记跟随 if (index >= 1)//标记跟随{text[0].text = EnglishSentence.Substring(0, index+1) + "<color='#0057FF'>▶</color>" + EnglishSentence.Substring(index+1);} if(index == 16)//转向{trans.Rotate(0, -90, 0, Space.Self);}if (index == 32)//转向{trans.Rotate(0, -90, 0, Space.Self);}if (index == 49)//转向{trans.Rotate(0, -90, 0, Space.Self);}if (index == 65)//转向{trans.Rotate(0, -90, 0, Space.Self);}if (index == 80)//转向{trans.Rotate(0, -90, 0, Space.Self);}trans.Translate(distance, 0, 0, Space.Self);//移动指定距离if (alphabet[index + 1] == ' ')//判断英语句子的空格{index++;}index++;if (index == 83)//结束{Time.timeScale = 0f;//运算时间处理变为0}}}private float nextTime = 1;void Timing()//计时器{if (Time.time >= nextTime){count += 1;nextTime = Time.time + 1;}text[1].GetComponent<Text>().text = "时间:" + count;//显示}}

第三步,在检视面板进行下图设置,图中上述未提到的不用管(博主的其他功能而已,会在后续文章介绍),新建两个文本拖入(文本需要自己调节),设置英文句子内容,句子中间有逗号也不怕,不过打字的时候就需要打逗号了,如果不需要打逗号,需要在上述代码中继续进行判断;其次,设置Distance,根据自己项目设置,这样一个类似于金山打字之生死时速的小游戏就做好了,运行即可。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。