# Spawn w roznych miejscach

0

Hej , jak ustawic zeby i(A) .... bylo rozne od B,C,D
chodzi mi o to zeby rzeczy nie spawnowaly sie na sobie , tylko kazda w innym punkcie a nie wiem jak zapisac A=/=B

``````  int i;

A.transform.position = spawnPoints[i=  Random.Range(1, spawnPoints.Length)].transform.position;
B.transform.position = spawnPoints[i = Random.Range(1, spawnPoints.Length)].transform.position;
C.transform.position = spawnPoints[i = Random.Range(1, spawnPoints.Length)].transform.position;
D.transform.position = spawnPoints[i = Random.Range(1, spawnPoints.Length)].transform.position;
``````
0

Np.

``````  int los = Random.Range(1, spawnPoints.Length);

A.transform.position = spawnPoints[los].transform.position;
spawnPoints.erase( los );
B.transform.position = spawnPoints[los].transform.position;
spawnPoints.erase( los );
C.transform.position = spawnPoints[los].transform.position;
spawnPoints.erase( los );
D.transform.position = spawnPoints[los].transform.position;

``````
0
##### stryku napisał(a):

Np.

``````  int los = Random.Range(1, spawnPoints.Length);

A.transform.position = spawnPoints[los].transform.position;
spawnPoints.erase( los );
B.transform.position = spawnPoints[los].transform.position;
spawnPoints.erase( los );
C.transform.position = spawnPoints[los].transform.position;
spawnPoints.erase( los );
D.transform.position = spawnPoints[los].transform.position;

``````

Wywala mi blad Transform[] does not contain a definition for erase and no extension method erase accepting a first agrument of type Transform[] could be found(are u missing a using directive or an assembly reference

0

Przerób spawnPoints na listę i zamiast erase używaj Remove.

Poza tym Random powinieneś brać od 0 do spawnPoints.Length (chyba, że celowo pomijasz pierwszy element).

Ja bym to zrobił po prostu tak (żeby nie kasować elementów tablicy spawnPoints):

``````using System.Collections.Generic;
// [...]
List<int> randomIndexes = new List<int>();
int idx = 0;

// generuj liste indeksow
for (int i = 0; i < spawnPoints.Length; i++) {
}

idx = Random.Range(0, randomIndexes.Count); // indeks losowego indeksu z listy indeksow
A.transform.position = spawnPoints[randomIndexes[idx]].transform.position;
randomIndexes.Remove(randomIndexes[idx]); // usuwamy wylosowany indeks

// itd... :

idx = Random.Range(0, randomIndexes.Count);
B.transform.position = spawnPoints[randomIndexes[idx]].transform.position;
randomIndexes.Remove(randomIndexes[idx]);

idx = Random.Range(0, randomIndexes.Count);
C.transform.position = spawnPoints[randomIndexes[idx]].transform.position;
randomIndexes.Remove(randomIndexes[idx]);

idx = Random.Range(0, randomIndexes.Count);
D.transform.position = spawnPoints[randomIndexes[idx]].transform.position;
randomIndexes.Remove(randomIndexes[idx]);
``````

Pisane z palca, może się nie kompilować. Oczywiście można to upiększyć (wpakować w jakąś metodę, żeby nie powtarzać w kółko tego samego kodu).