【问题标题】:Randomise Prefab Position Unity随机化预制位置 Unity
【发布时间】:2016-04-29 14:18:49
【问题描述】:

我正在创建一个游戏,玩家需要找到并拿起一定数量的钥匙。目前,我有一个生成容器,可以在给定位置生成 5 个键。我希望能够在 5 个随机位置生成 5 个密钥。所以假设我有 10 个生成点,我希望它随机选择 5 个点中的任何一个并在那里放置一个键。

到目前为止,我有以下代码

  using UnityEngine;
using System.Collections;

public class KeySpawnManager : MonoBehaviour 
{
    // array to store spawnpoints
    private Transform[] spawnTransformList;

    // integer to store number of spawnpoints
    private int numberOfSpawnpoints;

    // the prefab we're going to spawn
    public GameObject prefab;

    private int collectedCount = 0;

    private int currentTime = 0;


    // Singleton Instance
    public static KeySpawnManager Instance { get; private set; } 

    // AWAKE Function - fired on initialization
    void Awake () 
    {
        if (Instance == null) Instance = this;
        else Destroy( gameObject ); 

        numberOfSpawnpoints = transform.childCount;

        spawnTransformList = new Transform[numberOfSpawnpoints];

        for (int i = 0; i < numberOfSpawnpoints; i++) 
        {
            // add the spawn to the array
            spawnTransformList[i] = transform.GetChild(i); // return transform Component of each child object
        }

        for (int j = 0; j < numberOfSpawnpoints; j++)
        {
            GameObject newPrefab = (GameObject) Instantiate(prefab, spawnTransformList[j].position, spawnTransformList[j].rotation);

            newPrefab.transform.parent = transform.position;
        }

    }


}

关于如何做到这一点的任何想法? 谢谢

【问题讨论】:

  • 你的代码到底能做什么,你的代码不能做什么?
  • 所以我创建了 5 个空游戏对象,上面的代码在每个空游戏对象的位置生成了一个 key prefab。我试图将其更改为 10 个空游戏对象,但它只生成 5 个键并从 10 个空对象中随机选择一个

标签: c# unity3d


【解决方案1】:

在列表中创建十个空游戏对象,然后使用 Fisher-Yates shuffle 对列表进行随机播放,然后使用列表的前五个元素并在其中生成键

Here是c#中Fisher-Yates shuffle的实现

【讨论】:

    【解决方案2】:

    使用可以传入生成点总数的随机类创建一个随机方法。让它返回然后为您的生成位置建立索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多