c# - 如何统一复制游戏对象
问题描述
我尝试制作一个玩家必须跳过障碍物的游戏。我希望将障碍物复制到随机位置。我用 C# 编写了脚本的其余部分。我是初学者,所以我不太了解 C#
解决方案
首先,您应该创建一个障碍物的预制件,因为您想复制它。您可以通过将其从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 循环内多次执行(但请确保更改值,以便在不同位置实例化每个对象)。
推荐阅读
- sql-server-2012 - 另一个列值等于 FALSE 的 Max Date 仅不是 TRUE
- python - 遍历字典列表并获取最新的vale
- python - Django视图返回POST而不是GET请求
- r - 安装多个软件包,因为它们在特定日期存在于 CRAN 上?
- firebase - 仅使用动态链接时如何防止firebase数据库停用
- macos - 使用 XAMPP-VM Mac 在另一个文件中需要文件的正确路径是什么?
- python - 为什么我的列表字符串删除功能适用于小列表,但不适用于大列表?
- docker - 修复运行时:无法在 Docker 中创建新的 OS 线程(已经有 2 个;errno=22)
- javascript - 在 Rails/Webpacker 环境中使用 FullCalendar 和 Flatpickr “这是未定义的” TypeError
- python - 为什么 gensim summarise() 有时会返回空白?