Unity2D设置时间试验,在玩家结束时杀死玩家

时间:2015-12-06 00:45:33

标签: time unity3d 2d limit

我找不到任何答案。我想要的是设置一个5分钟的时间限制,从水平开始时开始,到水平结束时结束。我还希望它能够杀死播放器。这适用于Unity2D,我希望在屏幕的左上角或右上角看到计时器。所以基本上我需要一个像超级马里奥那样的时间限制。请在C#代码中。

2 个答案:

答案 0 :(得分:0)

将问题分解为更简单的任务。你需要某种类型的计时器,你会想知道如何“杀死”玩家。

要创建计时器,您可以利用Update每帧运行一次的方式。 Unity还附带了Time类。在时间中,有一个变量deltaTime,它跟踪完成最后一帧的时间(以秒为单位)。您可能想要添加到作为计时器的类的其他一些事情是何时启动和停止计时器。

要将计时器中的值输出到游戏,您可能需要使用Unity的UI系统和画布。您可以创建一个文本对象作为画布的一部分,并将该文本对象锚定到左上角。

要“杀死”某个玩家,您可以使用一些方法在计时器到达相关时间后运行并运行您想要的终止逻辑。

有用的链接:
MonoBehavior更新:https://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html
时间:https://docs.unity3d.com/ScriptReference/Time.html
用户界面:https://unity3d.com/learn/tutorials/topics/user-interface-ui

答案 1 :(得分:0)

您可以创建一个跟踪计时器的类,并检查失败的要求是否仍然存在。

在这种情况下,您可以为计时器设置一个浮点数,并在您完成关卡时为该状态设置一个布尔值。

计时器到达零,检查bool是否仍为假,如果是,则调用KillPlayer()。如果您通过触发触发器或任何将知道该级别是否应被视为已完成的任何内容来完成级别,则将bool设置为true。

所以你的最终检查可能如下:

public float levelTimer = 300f;
public bool levelComplete = false;

void Start()
{
     levelTimer = 300f;
     levelComplete = false;
}

void Update()
{
    levelTimer -= Time.deltaTime;     

    if(levelTimer <= 0 && !levelComplete)
    {
       KillPlayer();
       //Something like a Game Over screen maybe
    }
}

我希望这可以帮助你朝着正确的方向前进。