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++) {
                randomIndexes.Add(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).

1 użytkowników online, w tym zalogowanych: 0, gości: 1