Sprite Kit Map erstellen

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

  • Sprite Kit Map erstellen

    Hallo Leute,
    ich will ein Rund & Jump spiel Programmieren mit Hilfe von Sprite Kit.
    Mein Problem liegt an der Map, ich weiss nicht genau wie ich eine Map erstellen soll.
    Man soll mit einer Kostanten Geschwindigkeit sich fortbewegen.

    Ich habe mir Gedacht ich nehme einfach ein View der ist so breit wie die Map ist und darauf lege ich meine SKNodes und verschiebe die Map.
    Oder ich erstelle zu einem richtig Zeitpunkt ein Element setzte es am ende des Views und bewege nur die einzelnen Elemente.
    Was wäre den besser ?
    oder wie würdet ihr es machen ?

    Es gibt noch ein sogenanntes Kobold Kit und ein Map Editor namens Tiled
    Kobold Kit stellt ein Klasse zu Verfügung mit der du eine Tiled Map erstellen kannst.
    Ich will aber nicht Kobold Kit lernen sondern Sprite Kit (Sprite Kit kann nicht aussterben ^^).
    Wie erstellt Kobold Kit eine Map ? er erstellt glaube ich auch einfach ein View der die größe der Map hat und generiert die Objekte darauf und bewegt dan die Map.
    Was mein ihr ?

    ich bedanke mich schon einmal im voraus für die Hilfe.
    Marius
  • Ja und? Das tmx File wird ohne Kobold Kit geladen, falls es dir darum geht. Tiled ist halt nur ein Editor um File-Maps zu erstellen, alternativ kannst du auch eine Textdatei nehmen wo dein Level codiert drin steht.

    Quellcode

    1. 00000
    2. 01102
    3. 33333

    Wobei 0 = nichts 1= Plattform 2=Power up und 3=Untergrund ist.

    Edit:
    Kobold Kit baut auf Sprite Mit auf, bietet also nichts was nicht mit Sprite Kit nicht machbar ist.
    Das Herz besitzt Gründe, die die Vernunft nicht kennt.
  • Im Prinzip ist es wie immer ganz einfach ;)
    Du nimmst wie schon oben gesagt nen Texteditor und baust darin deine Map auf:

    Quellcode

    1. unsigned char map[]={ 1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,
    2. 1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,
    3. 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    4. 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    5. 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    6. 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    7. 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
    8. 0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0
    9. };


    Alles was ne 1 ist, ist ein Block (Stein) Nullen sind nix. Der Vorteil wenn du das so machst ist später für die Kollisionsabfrage ganz wichtig.
    Du fragst nur die Blocks ab die dich unmittelbar umgeben (ist ja nix anderes als ein Raster, in dem man sehr einfach seine Rasterposition berechnen kann)
    Wenn du das ganze scrollen willst, ist das auch recht einfach, alle Blocks also die komplette linke Reihe verschwindet aus dem Schirm, und auf der rechten Seite kommt ne neue Dazu.
    So kannst du riesige Levels bauen und musst dir keinen Kopp über den Speicher oder sonstiges machen, du malst immer nur die Teile der Map die sichtbar sind (Raster) und auch nur diesen sichtbaren Teil nimmst du für die Kollisionsabfrage, Bewegungen der anderen Sprites usw...

    Machs erst ganz einfach mach ein Textfile mal ne Reihe Zahlen rein und rendere dann die Sprites entsprechend der Zahlen auf den Schirm.
    usw...

    :)
  • Marius Hartig schrieb:

    wäre es gut wenn ich ein collection view nehme hat keine ränder und zwischen räume und aktualisiere immer die cells ?
    oder ein scroll view ?

    Dafür ist ein Collectionview eigentlich nicht gedacht, und vermutlich rennst Du damit in eine Reihe anderer Probleme. Schau Dir dafür lieber mal einen CATiledLayer an. Damit kannst Du sehr große Views darstellen, und die Implementierung ist auch nicht so schwer.
    „Meine Komplikation hatte eine Komplikation.“