Denn ganzen raum mit Blöcken füllen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Denn ganzen raum mit Blöcken füllen

    cheese Blocks for everyone
    Ich möchte von mein Charakter aus denn ganzen bereich von -500 xy bis +500 xy mit 32x32 Blöcken füllen in einen raster von 32x32 zum nächsten.
    (Wo ein Block oder was anderes steht soll kein Block spawen, ausgenohmen von dem Charakter und 1 2 anderen Objekten)

    hätte da jemand ein Tut für mich?
  • Du läuft mit Schleifen das gesamte Gebiet ab. Guckst an jedem Platz ob dieser frei ist oder nicht und wenn ja, dann wird dort ein Block erstellt.
    Wo genau sind deine Probleme? Bitte ein bisschen genauer Erklären was du schon versucht hast, was du nicht verstehst etc..

    Viele Grüße
    Christian
    Aktuelles Projekt: Aufbau - Strategiespiel.
    Aktueller Entwicklungsschritt: Planung | Grundengine entwickeln.

    Wichtig ist nicht, besser zu sein als alle anderen.
    Wichtig ist, besser zu sein als du gestern warst.





  • ok hab selber getestet und was gefunden

    GML-Quellcode

    1. if not instance_place(round(0+heroobjekt.x/64)*64,round(0+heroobjekt.y/64)*64,object26)
    2. {
    3. instance_create(round(0+heroobjekt.x/64)*64,round(0+heroobjekt.y/64)*64,object26)
    4. }


    frage kann ich das mit einem einfachen Code gleich auf -500x1 -500y1 +500x2 +500y2 fläche prüfen oder muss ich jetzt für jeden Feld extra prüfen ?
    und für die die es wissen möchten. Ich möchte ein Infintiy-dungen-Generator Bauen der sich immer weiter bildet wenn der Spieler sich weiter bewegt. Natürlich mit einer Abschlat-Kuppel, wenn sich was auserhalb er Kuppel befindet, um Fps zu sparen.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Knockx ()

  • Wenn dir Schleifen als Konzept nicht bekannt sind, lies das mal in der Hilfe nach. Du wirst wohl for-Schleifen verwenden wollen.

    Ein kleines Beispiel:

    GML-Quellcode

    1. for var i = 0; i < 10; ++i {
    2. show_message(string(i));
    3. }

    Diese wenigen Zeilen geben dir die Zahlen 0 - 9 als einzelne Nachrichten aus.

    In deinem Fall könntest du sowas schreiben:

    GML-Quellcode

    1. for var iy = -500; iy < 500; iy += 32 {
    2. for var ix = -500; ix < 500; ix += 32 {
    3. if collision_point( ix, iy, obj_parent_blocking, false, true ) == noone {
    4. instance_create(ix, iy, obj_block)
    5. }
    6. }
    7. }

    Einige meiner Spiele:
  • Ich hab etwas getestet und das hier geschrieben

    GML-Quellcode

    1. /// step von object26
    2. if(x+500 > round(0+heroobjekt.x/64)*64) && (x-500 < round(0+heroobjekt.x/64)*64)
    3. {
    4. if(y+500 > round(0+heroobjekt.y/64)*64) && (y-500 < round(0+heroobjekt.y/64)*64)
    5. {
    6. if collision_point( x-64, y, object26, false, true ) == noone {
    7. instance_create(x-64, y, object26)
    8. }
    9. if collision_point( x+64, y, object26, false, true ) == noone {
    10. instance_create(x+64, y, object26)
    11. }
    12. if collision_point( x, y+64, object26, false, true ) == noone {
    13. instance_create(x, y+64, object26)
    14. }
    15. if collision_point( x, y-64, object26, false, true ) == noone {
    16. instance_create(x, y-64, object26)
    17. }
    18. }
    19. }
    Alles anzeigen


    oooo hab fehler gefunden

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Knockx ()

  • 1. Wieso machst du das im Step-Event? Dann prüft das Objekt jeden Step, ob es hier etwas erstellen kann. Aber es prüft immer die selben 4 Stellen. Ich nehme an, du wolltest eigentlich alle Stellen prüfen? Dann müsstest du aber x und y ändern. Außerdem würde der ganze Spaß mehrere Steps brauchen. Nutze dafür doch lieber eine Schleife und mach alles in einem Step.
    2. Ich würde dir raten, deine Objekte sinnvoll zu benennen. "object26" ist kein wirklich aussagekräftiger Name. Ich würde dir empfehlen, eine Abkürzung für den Typen (Objekt, Sprite, etc.) an den Anfang zu stellen (zum Beispiel "oHero" oder "objHero") um doppelte Namen bei Sprites und Objekten zu vermeiden und sinnvolle Namen zu vergeben ("objBlock" anstatt "object26").
    3. Du hast oben was von einem 32x32 Raster geschrieben, verwendest in deinem Code aber ein 64x64 Raster.
    4. Was soll das "0+heroobjekt.x". Stand da mal ein Offset drin? Das "0+" kannst du jedenfalls bedenkenlos weglassen.
    Einige meiner Spiele: