如何在 Unity 游戏中制作一个 more try 函数

How to make one more try function in a Unity game

我不知道我该怎么做。如果游戏对象掉落并与对撞机发生碰撞,您将输掉一场比赛。我想添加一个功能,询问玩家是否要再试一次,如果是,它将反转一段时间,这样掉落的游戏对象将回到屏幕上,允许用户再次玩。是否有时间 function/method 来做这件事? 希望你明白。

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;   
}

unity 中没有内置的时间倒转功能,这需要 unity 记录到那一点之前的所有事件。

但是根据您的示例,您可以创建一个 'checkpoint',其中场景以特定方式设置并且对象位于特定位置。就像在你跌倒的马里奥中一样,它会播放一些音乐来表明你失败了,然后它会让马里奥回到某个位置。只需具有将玩家位置更改为检查点位置的功能即可。这同样适用于您需要重置的任何其他游戏对象。

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

我为那个对撞机创建了一个 child object。当我与对撞机发生碰撞时,我将 child 移动到我希望玩家居住的地方。

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

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

您的错误是因为您在 Vector2

之前缺少 new 关键字

When using C# you need to use the new keyword in front of all constructors. Constructors are like functions that are used to create new objects (or scructs). They always have the same name as the type of object you are creating.

所以你应该写

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);