首页 > 解决方案 > 如何统一复制游戏对象

问题描述

我尝试制作一个玩家必须跳过障碍物的游戏。我希望将障碍物复制到随机位置。我用 C# 编写了脚本的其余部分。我是初学者,所以我不太了解 C#

标签: c#unity3d

解决方案


首先,您应该创建一个障碍物的预制件,因为您想复制它。您可以通过将其从Scene Hierarchy拖到Project>Assets Folder中来做到这一点。

之后,在Scene中创建一个Empty Game Object,并为其添加一个脚本,您可以将其命名为ObstacleSpawner之类的名称。

我不想给你一个完整的答案……但是在脚本中,你会有一个公共的 GameObject 障碍;(或公共 GameObject[] 障碍物;如果有多个)。保存脚本后,Empty Game Object > ObstacleSpawner (Script) 的检查窗口现在将在框中有一个名为“Obstacle”的内容:“None (Game Object)”。您可以将由障碍物制成的预制件拖到那里。

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

要简单地在 Empty Game Object 所在的位置生成障碍物,请使用Instantiate(obstacle, transform.position, transform.rotation);

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

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


推荐阅读