Charakterauswahl

  • GM 8

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

  • Charakterauswahl

    Hallo allemiteinander,
    Ich habe ein Maze-/Labyrithspiel mit Spieler, Gegner, Menü, Pausemenü und Münzen gemacht.
    Bei diesem Spiel möchte ich noch ein Charakterauswahlbildschirm mit per Mausklick wählbaren Charakteren machen.
    Ich hab nur leider keine Ahnung wie. Könnt ihr mir bitte helfen? Danke schonmal im voraus.
    Grü

    P.S.: das hier ist mein erster Thread also bitte nicht so streng sein:-)
    Immer, wenn du denkst es geht nicht mehr, kommt von irgendwo ein Grizzlybär. :thumbsup:

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

  • Hallo und willkommen auf GM-D.de,

    Du willst wenn der Charackter ausgewählt wird,
    dann auch das er in deinem room_mission(sag ich mal) mitkommt.

    Das ist ganz easy:
    Du musst aber schon die obj_charackters(1) und -(2) schon haben.
    Danach mach einen Sprite der das Bild von dem obj_charackter(1) hat.
    Einen obj_auswahl_c1 erstellen -> left button -> dann soll er
    einfach in dem Raum kommen wo das Spiel läuft. Natürlich
    wird vorher der obj_charackter(1) im Raum hinzugefügt.

    Dann wenn du einen obj_charackter(2) hast,
    machst du das gleiche. Dann musst du das Raum
    denn du bei charackteer(1) hast verdoppeln -> und denn (2) hinfügen.
    Danach beim Auswahl auf obj_auswahl_2 left Button -> Raum
    wo der (2) ist.


    Okay, wie mein Beitrag klingt ist es nicht ganz
    Easy, aber viel glück noch!
  • Bin mir nicht sicher, ob ich kaano123 verstanden habe, weshalb ich es auf meine Art erkläre. Ich nehme an, du willst einen Bildschirm mit x Charakteren. Wenn man einen anklickt, wird dieser im eigentlichen Spiel verwendet. Richtig?

    Angenommen, du hast einen extra Raum für die Auswahl. Den Charakter würde ich als globale Variable nehmen. Also vor der Auswahl

    GML-Quellcode

    1. global.charakter=0;


    Für jeden Charakter hast du eine eigene Zahl. Klickt man den Charakter im Menü an, wird die globale Variable entsprechend gesetzt. Zum Beispiel

    GML-Quellcode

    1. global.charakter=3;


    Wenn du im Menü auf "weiter" klickst, kommst du in dein Level. Dort hast du i.d.R. ein Objekt für die Spielkontrolle (kann ich zumindest empfehlen. Im Create-Event dieses Objektes bestimmst du, was beim entsprechenden Charakter-Wert passiert. Beispiel:

    GML-Quellcode

    1. if global.charakter=3{
    2. instance_create(32,32,obj_charakter3);
    3. }


    Zu Deutsch: wenn der Wert global.charakter 3 ist (der Charakter 3 also ausgewählt wurde) wird das Objekt obj_charakter3 (das ist dein Charakter 3) an der Raumposition 32,32 (x,y) erstellt. Die Position kann beliebig sein.

    Ich hoffe, dass war so verständlich.
  • Ich habe es so verstanden das du vor der Mission deinen Caracter wählen mööchtest.

    Dann ich würde das mit einer globalen variable machen.
    Am anfang wird diese auf 1 gesetzt damit Caracter 1 automatisch der standart ist.
    Nun brauchst du noch Caracterauswahlbuttons die diese variable verändern und zum nächsten Raum gehen.
    Keine sorge globale variablen überleben den raumwechsel.
    Caracter 1 im missionraum muss dann diese variable prüfen und dann in den ausgewahlten Caracter wechseln.
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
  • Statt über mehrer Playerinstancen, was bei großen Projecten sehr kompliziert werden kann. Geht es auch einfacher, wenn auch etwas mehr Schreibarbeit nötig ist.
    Ich würde das ganze mit einen Array machen. Als erstes brauchen wir ne Globale Variable.

    gamestart

    GML-Quellcode

    1. global.charaktersprite=0 // 0 wird der standart Charakter


    Nun im Create-Event des Player-Objekts

    GML-Quellcode

    1. sprite_use_left[0]= sprite des charakter 1 bei Links
    2. sprite_use_right[0]= sprite des charakter 1 bei Rechts
    3. //usw, je nachdem wieviel Sprites ein Charakter hat
    4. //dann die anderen Charktere
    5. sprite_use_left[1]= sprite des charakter 2 bei Links
    6. sprite_use_right[1]= sprite des charakter 2 bei Rechts
    7. //usw. Ich denke man sieht was ich hier meine


    Bei deinen Sprite-Wechsel kontrollen:

    GML-Quellcode

    1. Image_index=sprite_use_left[global.charaktersprite] // natürlich das Sprite nehmen was da braucht wird
    2. //hier bin ich mir nicht sicher ob image_index oder sprite_index




    Wenn du einen Charakterbildschirm hast, brauchst du nur die globale.Variable ändern und schon geht es.Z.B.
    Mouse Left Release event bei den Button von Charakter 2

    GML-Quellcode

    1. Global.charaktersprite =1

    Der Vorteil hier ist, das man nun nur noch im create-event neue Sprites zufügen muß wenn man einen neuen Charakter einfügen will. Finde dies ist die beste Variante wenn sich nur die Optik ändert.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Baruter ()

  • Jupp ist leichter allerdings kann man Eigenschaften(leben, Sprunghöhe) auch mit den Array lösen.

    Im create

    GML-Quellcode

    1. gesundheit[0]=100
    2. gesundheit[1]=150


    GML-Quellcode

    1. Gesundheit= gesundheit[global.charaktersprite]


    Schwieriger wird es bei total neuen Eigenschaften/Fähigkeiten, ist aber auch gut lösbar (switch/if Abfragen)

    So hat man nur 1 einziges Player-Objekt und spart dadurch Ressourcen, meine mal gelesen zu haben, das weniger Objekte einfach mehr sind(auch wenn sie garnicht created werden)
  • Baruter schrieb:

    Schwieriger wird es bei total neuen Eigenschaften/Fähigkeiten, ist aber auch gut lösbar (switch/if Abfragen)
    Ja, je nach GML Status ist das schwieriger.
    So hat man nur 1 einziges Player-Objekt und spart dadurch Ressourcen,
    meine mal gelesen zu haben, das weniger Objekte einfach mehr sind(auch
    wenn sie garnicht created werden)
    Das kann ich mittlerweile ganz fett unterstreichen. Bei meinem letzten Projekt waren fast alle Grafiken Objekte, auch Bäume etc. Auf schwächeren Rechnern geht dadurch das Spiel enorm in die Knie.
  • Danke erstmal für all eure Antworten!
    Ein paar kleine Fragen hätte ich aber noch:
    Sind globale Variablen für alle Objekte? Ich hatte nämlich vor, ein Objekt zu machen, das dann je nach auswahl per globaler Variable ein anderer Charakter ist.
    Ich hab schonmal versucht eine globale Variable zu machen dach IMMER(!), wenn ich das Spiel dann gestartet hatte, kam irgendeine Fehlermeldung, in der stand, dass die Variable soundso nicht definiert worden wäre. Wisst ihr warum? Manchmal hilft schon eine andere Aktion und er kennt sie nicht! Ich schreib die immer so:
    var global.money
    global.money = 100
    und wenn ich das dann versuche zu starten steht dort dann:
    bla bla bla(Text von oben)
    ^undefinited variable money
    könnt ihr mir sagen wieso?
    danke
    Immer, wenn du denkst es geht nicht mehr, kommt von irgendwo ein Grizzlybär. :thumbsup:
  • Du musst die variable so:

    GML-Quellcode

    1. globalvar money;

    definieren.

    Und dann kannst du von jedem Object aus die variable "money" verändern...oftmals schreibt man vor den variablennamen zB GV"" damit man besser sieht welche Variablen global sind und welche lokal.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)