Jump to content
Unity Insider Forum

Jump and Run mit sich immer neuer generierbarer Karte


Joscupe

Recommended Posts

Ich würde gerne einen Jump and Run programmieren der sich immer weiter lädt/ generiert. Ich bin totaler Anfänger und hab deshalb keie Ahnung wie das geht. Ich würde mich freuen wenn jemand eine Lösung dafür hat und es auch erklären (oder Erklärlinks hinzufügen) kann.

P. S ich bin schon seit Wochen nach einer Lösung am suchen, damit meine ich nicht einfach ein Viedeo das mir den Code vorschreibt sondern nach erklärungen wie ich den Code schreiben kann, respektiv Erklärungen. Ich möchte es nicht Abschreiben sondern verstehen, dachte ich mir dabei.

 

Ich danke euch für eure Unterstützung

Joscupe

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo

 

Du kannst dir einzelne Elemente der Map erstellen und diese als prefabs hinterlegen. Kannst du dir als Baustein vorstellen. Wenn du einige dieser Bausteine erstellt hast, kannst du dir während der Laufzeit deines Programms zufällig einen davon auswählen und anzeigen. Das ist das Grundprinzip. Natürlich kannst du das beliebig verfeinern, aber so ist der Start. 

Tipp: Mach dir zwei total simple Prefabs (einfach zwei Grafiken) und versuche dann 10 anzuzeigen, wobei zufällig ist, welches grafik an 1,2,3, usw angezeigt wird. Von dort aus, ist der Rest ein Kinderspiel🤪. Du MUSST ganz klein anfangen.

 

Christoph

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich versuche mich gerade an den Würfeln, dass ein Würfel zufällig generiert wird.

public class RandomCubes : MonoBehaviour
{
    public GameObject[] Cube1;
    public GameObject[] Cube2;
    public GameObject[] Cube3;
    public GameObject[] Cube4;
    public GameObject[] Cube5;
    public GameObject[] Cube6;
    public GameObject[] Cube7;
    public GameObject[] Cube8;
    public GameObject[] Cube9;
    public GameObject[] Cube10;




    void Start()
    {
        GameObject[] CubesOneToTen = new GameObject[Cube1, Cube2, Cube3, Cube4 ,Cube5, Cube6, Cube7, Cube8, Cube9, Cube10];
        var prefab = CubesOneToTen[Random.Range(0, CubesOneToTen.Length)];
    }

Deshalb wollte ich alle Würfel in eine Liste packen was aber als Error angezeigt wird, ich suchte schon im Internet nach einer Lösung wie Gameobjects in eine Liste machen kann, leider erfolglos. Deshalb frage ich mich wie ich das lösen könnte.

Joscupe

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du eine Variable mit eckigen Klammern deklarierst, dan legst du fest, dass diese Variable ein Array bildet.
Du hast also 10 GameObject-Arrays gebildet und die Cube1 bis Cube10 genannt.
In der Start willst wieder ein GameObject-Array bilden und dort gleich deine Cube Arrays einfügen. Also ein Array aus 10 Arrays.

Merkst du es?

Deklarier doch einfach gleich ein einziges Array, welches 10 Stellen hat und leg dann im Inspector alle deine 10 Würfel rein.

public GameObject [] CubesOneToTen = new GameObject[10]; // dem Array gleich eine Größe verpasst. Lässt sich aber auch noch ändern

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich frage mich wie ich das mache: wenn ich an einem bestimmten Zeitpunkt stehe, dass es dann neue Prefabs/weiter generiert.

public class RandomCubes : MonoBehaviour
{


    
    public GameObject[] CubesOneToTen = new GameObject[10];
    void Start()
    {

        for (float x = 0; x <= 10; x += 1)
        {
            var randomCube = CubesOneToTen[Random.Range(0, CubesOneToTen.Length)];
            Instantiate(randomCube, new Vector3(x, 0, 0), Quaternion.identity);
        }
    }

 

Joscupe

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo

 

Zeitpunkt heißt Zeit? Also nach beispielsweise 10 Sekunden soll was Neues generiert werden?

 

Wenn ja, könntest du es probieren:

float _time = 0f;
float _timeYouWant = 10f;

private void Update()
{
	_time += Time.delatTime;
	if(_time > _timeYouWant)
	{
		//MAch hier, was du willst
		_time = 0;
	}
}

 

Christoph

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich habe das jetzt so versucht und dran rumgetüftelt aber es funktioniert nicht. Ich versuchte es so das wen sich die x Position des Spielers grösser ist als die x Position des Prefabs soll es 10 neue, zufällig generierte Würfel zu generieren. Aber es funktioniert einfach nicht.

public class RandomCubes : MonoBehaviour
{
    public GameObject player;
    public GameObject[] CubesOneToTen = new GameObject[10];
    public float xAxis = 0;
    void Start()
    {


    }

    void Update()
    {
        if (player.transform.position.x > xAxis)
        {
            for (float x = 0; x <= (x + 10); x += 1)
            {
                var randomCube = CubesOneToTen[Random.Range(0, CubesOneToTen.Length)];
                Instantiate(randomCube, new Vector3(x, 0, 0), Quaternion.identity);
                xAxis = x;
            }
        }
    }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...