如何统一复制游戏对象

时间:2018-11-10 10:43:54

标签: c# unity3d

我试图制作一款游戏,玩家必须跳过障碍物。我希望障碍物被复制到任意位置。我用C#编写了其余脚本。我是一个初学者,所以我对C#不太了解

1 个答案:

答案 0 :(得分:2)

首先,您应该为障碍物创建一个预制件,因为您要复制它。您可以通过将其从场景层次结构拖动到 Project>资产文件夹中来实现。

然后,在场景内部创建一个空游戏对象,并向其中添加脚本,您可以将其命名为 ObstacleSpawner

我不想为您提供完整的答案...但是在脚本中,您将遇到 public GameObject障碍; (或 public GameObject []障碍; (如果有不止一个)。保存脚本后,空游戏对象> ObstacleSpawner(脚本)检查器窗口现在将在其中包含一个名为“ Obstacle”的东西:“ None(游戏对象)”框。您可以将由障碍物制成的预制件拖到里面。

生成障碍物,请返回脚本。在 Start(){} 函数中,使用 Instantiate 函数。它需要3个参数,第一个是 GameObject ,因此将是障碍。第二个是 Vector2(x,y) Vector3(x,y,z)位置,第三个是旋转位置( Quaternion.Euler(x,y, z))。

要简单地在空游戏对象所在的位置生成障碍物,请使用实例化(障碍,transform.position,transform.rotation);

我假设这是2d,因此您可以随机更改 Vector2 位置的 x 值以使其左右移动,下面的示例将返回从空游戏对象中在 x轴上的0到20个单位之间随机放置 x 位置: float num = Random.Range(0,20);

实例化可以在for循环内使用,以执行一次以上(但请确保更改值,以使每个对象在不同的​​位置实例化)。