2016-04-29 4 views
0

im создает игру, в которой игроку нужно найти и забрать определенное количество ключей. В настоящее время у меня появился контейнер икры, который генерирует 5 ключей в данных местах. Я хочу, чтобы иметь возможность генерировать 5 ключей в 5 случайных местах. Так что давайте скажем, что у меня 10 точек появления, я хочу, чтобы он случайно выбирал любой из 5 очков и размещал там ключ.Randomise Prefab Position Unity

У меня есть следующий код до сих пор

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; 
     } 

    } 


} 

Любые идеи о том, как это сделать? thanks

+0

Что это такое, что делает ваш код и что это значит, что ваш код не может сделать? –

+0

Итак, ive создал 5 пустых игровых объектов, а код выше порождает ключевой сбор в позиции каждого пустого игрового объекта. Я пытаюсь изменить его на 10 пустых игровых объектов, но он порождает только 5 ключей и выбирает случайный один из 10 пустых объектов – Kingspud

ответ

2

создать десять пустой GameObject в списке затем перетасовать список с помощью Fisher-Yates перетасовать затем использовать первые пять элементов списка и нерест ключи в них

Here является реализация Fisher-Yates shuffle in C#

0

Создайте случайный метод, используя случайный класс, который вы можете передать в общем количестве точек появления. Попросите его вернуть индекс для вашего места появления.

Смежные вопросы