如何在Unity游戏中再试一次

时间:2017-08-25 10:41:23

标签: c# unity3d unity2d

我不知道怎么办。如果游戏对象掉落并与对撞机发生碰撞,则会输掉游戏。我想添加一个功能,询问玩家是否需要另一次尝试,如果是,它将反转一段时间,以便掉落的游戏对象将返回到屏幕上,并允许用户再次玩。有没有某种时间功能/方法来做到这一点? 希望你明白。

void OnCollisionEnter2D(Collision2D col)    {
    if(col.gameObject.tag=="Collider") {
        Vector2 checkpoint = new Vector2(transform.position.x, transform.position.y +5)
    }
}   

void Reset(){       
    this.transform.position = checkpoint;   
}

3 个答案:

答案 0 :(得分:2)

我为该对撞机创建了一个子对象。当我与对撞机相撞时,我将孩子移到了我希望玩家居住的地方。

  Void OnCollisionEnter2D(Collision2D col)
    {
         if(col.gameobject.tag=="die")
          {
              checkpoint = col.transform.GetChil(0).position;
          }
    }

void Reset(){
            Player.transform.position = checkpoint;
}

答案 1 :(得分:2)

您的错误是因为您在Vector2

之前缺少关键字
  

使用C#时,您需要在所有人面前使用new关键字   构造函数。构造函数就像用于创建的函数   新对象(或scructs)。它们的名称始终与类型相同   您正在创建的对象。

所以你应该写

Vector2 checkpoint = new Vector2(transform.position.x, transform.position.y +5)

而不是:

Vector2 checkpoint = Vector2(transform.position.x, transform.position.y +5)

编辑:现在您编辑了没有错误的问题,并且由于您仍在尝试找到一种方法可以及时移回Unity中发生的事情,我可以告诉您该问题不存在。但是你可以自己实现它。我建议你这样的事情:

  • 如果它是平台2D游戏,如马里奥兄弟风格,你可以放入 你的场景是一个在玩家激活时触发的序列 通过他们。

  • 然后你可以让boolean array长度n等于 触发器数量,然后是矩阵nx2(触发器数量x 每个触发器的坐标[x,y])。

  • 最初,数组中的所有元素都具有false值,并且 每次触发器被激活时,相应的元素就会被激活 数组更改为true。

  • 当玩家死亡时,它会检查数组中的所有元素,直到它为止 到达最后一个真实元素(这将是最后一次触发 激活)。

  • 使用上一步的索引形式,您可以访问矩阵 触发器并提取两个元素(x和y坐标)。那么你 在以下内容中使用该值:

使用您的脚本:

Vector2 checkpoint = new Vector2(xCoordinate, yCoordinate);

答案 2 :(得分:1)

在内置函数中没有以统一的方式反转时间,这需要统一记录所有事件直到那一点。

但是考虑到你的例子,你可以做的是创建一个'检查点',其中场景以某种方式设置,对象处于特定位置。就像你在马里奥摔倒一样,它播放一些音乐表明你失败了然后它把马里奥带回了某个位置。只需一个功能可以将玩家位置更改为检查点位置。这同样适用于您需要重置的任何其他游戏对象。

public void Reset()
{
    player.position = checkpoint.position;
}