从头开始创建简单的答题器游戏

在过去的几年中,诸如“点击器”这样的类型的游戏越来越受欢迎。 我自己对玩它们很感兴趣,但是创建一个游戏(我自己也是一个点击器)也同样有趣。 得益于Unity之类的引擎,即使对于一个简单的初学者来说,制作杰作也不难。 让我们开始做生意。

需要做什么?


  1. 考虑一下为什么以及应该点击什么?
  2. 单击时应该怎么办?
  3. 如果我们不点击该怎么办?

当我回答这些问题时:

  1. 我们必须单击屏幕上的任何位置。
  2. 单击后,对象应更改。
  3. 如果忽略,将造成损失。

游戏将会是什么?


玩家需要根据从天而降的时间及时选择剑或盾。 也就是说,剑掉落-我们选择剑,盾牌掉落-我们选择盾牌。 如果您选择错误,玩家将输掉比赛。 换句话说,一切都非常简单,但是在实现中甚至更简单。

在哪里让初学者带上漂亮的精灵和背景? 答:画自己。

正如我们在Adobe Illustrator中绘制的那样,没有什么复杂的。 即使您没有绘图经验,我们也不会感到沮丧,因为我将向您详细介绍所有内容。

我们需要什么:

  1. 盾牌
  2. 背景知识
  3. 叶子的分支

够了

该技术很简单,我将以剑为例进行演示:

  1. 画轮廓
  2. 装满鲜花
  3. 画阴影



就是这样,我们的剑已经准备好了!

我们也与他人合作。 如果一开始您对您的创作似乎并不理想,请不要惊慌,因为它们在一起看起来就像梵高的画。 开个玩笑 也许不是。







背景将更加棘手。

绘制一个绿色矩形并使用渐变。 看起来像这样:



我们可以说美术课结束了,我们终于去了Unity。

首先,让我们扔掉精灵,并将剑和盾拖到层次结构窗口中,因为我们不仅需要从中创建预制件。



  1. 添加“刚体2D”并将“重力比例”字段中的值设置为“ 0”,以便将盾构放置在一处。
  2. 添加Circle Collider 2D并选中Is Trigger复选框以跟踪动作。

使用预制件执行相同的操作,仅需要在“重力比例”字段中将值设置为“ 1”,以使防护罩掉落。 并将其拖到Prefabs文件夹中。 与剑一样的动作。 做完了!

接下来,用前面绘制的精灵装饰游戏。 我们抛出的第一件事是背景。

  1. 在顶部放置分支
  2. 在下面添加日志
  3. 在中间放置一座桥



设计的主要秘诀是:我们将在顶部和底部放置分支,并在梯子上降低透明度值。 为什么这样

事实是,通过这种方式我们创造了一定的空间幻觉。 在玩家看来,有一个前方物体,一个后方物体和一个地平线。 这太棒了!

现在创建一个将占据整个屏幕的按钮。 要在层次结构中创建按钮,请单击UI-> Button。 下一个:

  1. 单击颜色。
  2. 我们在A字段中设置值“ 0”,该值负责按钮的透明度。
  3. 我们确保按钮已成为我们想要的。



以同样的方式,我们创建一个文本来显示我们的当前分数和记录。

最后,我们开始编程。

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class MainScript : MonoBehaviour { public GameObject[] prefabs; //  public GameObject[] players; //  public static int score,record,n,k = 0; //, , "n,k" -  public Text scoreT; //   void Start() { score = 0; Time.timeScale = 1; StartCoroutine (PrefabsCreate ()); scoreT = scoreT.GetComponent<Text> (); record = PlayerPrefs.GetInt ("Record"); } void Update() { n = Random.Range (0, prefabs.Length); //    // 0  -  scoreT.text = score + "/" + record; //     if (score >= record) { record = score; PlayerPrefs.SetInt ("Record", record); //   } } IEnumerator PrefabsCreate(){ //    while (true) { Instantiate (prefabs [n], new Vector2 (0, 6.5f), Quaternion.identity); yield return new WaitForSeconds (0.5f); } } public void BtnClick(string btn){ //    if(btn == "Click"){ Time.timeScale = 1; players [k].SetActive (false); //   (, ...) k++; if (k >= prefabs.Length) { k = 0; //  ,  k  -  } players [k].SetActive (true); //   (, ...) } } } 

第二个脚本:

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerScript : MonoBehaviour { void OnTriggerEnter2D(Collider2D other){//   (, ) //     if (other.gameObject.tag != gameObject.tag) { Time.timeScale = 0; MainScript.score = 0; } else { MainScript.score++; Destroy (other.gameObject);//   } } } 

这些方法是怎么回事?

开始()。 每次我们开始游戏或重新启动场景时都会开始。 此方法中编写的所有内容仅执行一次。 因此,我们在这里写:一个等于零的帐户,协程的启动(负责创建预制件),时间值。

更新()。 每帧运行一次。 在这里写下不断更新的内容很方便。 在我们的例子中:得分和记录的指示器,取决于创造的东西的随机值n-剑或盾。

BtnClick()。 您可能会问为什么这种方法是“公开的”? 我们需要将它反映在Unity本身中,我们可以拼写出“单击”一词以跟踪我们单击哪个按钮,尽管只有一个按钮,但是知道更多一点不会伤害任何人。



在这里,我们写了单击按钮后应该发生的情况。 按下时,它应从剑变为盾,反之亦然,将时间值设置为“ 1”,因为丢失时将重置为零。

OnTriggerEnter2D()。 检查对象的碰撞。 如果两个对象的标签匹配,则分数增加1,并且预制件被破坏。 如果标签不同,则损失-时间停止,分数重新设置。

仍然要添加这些相同的标签。 这很简单:

  1. 在检查器窗口中,单击标签。
  2. 在最底部的下拉列表中,单击添加标签。
  3. 单击加号并根据需要命名标签。



创建后,还单击标签并选择所需的标签。

仍然需要将脚本转移到必要的对象并填写一些字段。 创建一个空对象并添加“主脚本”脚本,然后将“玩家脚本”添加到我们的剑盾中。



完全有信心,我可以说游戏已经准备就绪。 我们推出并享受我们的第一个创造。



gamedev一切都好运!

Source: https://habr.com/ru/post/zh-CN470103/


All Articles