随机预制位置统一

时间:2016-04-29 05:40:57

标签: c# unity3d

即时创建游戏,玩家需要找到并获取一定数量的密钥。目前我有一个生成容器,在给定的位置生成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;
        }

    }


}

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

2 个答案:

答案 0 :(得分:2)

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

Here是c#

中Fisher-Yates shuffle的实现

答案 1 :(得分:0)

使用随机类创建一个随机方法,您可以传递生成点的总数。让它返回你的产卵位置的索引。