Brauche Hilfe bei der Steuerung

  • GM 8

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

  • Brauche Hilfe bei der Steuerung

    Guten Morgen, Ihr freundlichen Helferlein alle,

    ich habe wieder mal ein Problem, an dem ich mir die Zähne ausbeisse und einfach nicht weiterkomme:
    in meinem Spiel mußte ich die gesamte Steuerung des Raumschiffes umschreiben. Im Grunde funktioniert sie jetzt zufriedenstellend, nur eines klappt einfach nicht: wenn man auf Dauerfeuer geht, also die Schuss-Taste festhält und dann die Richtung des Raumschiffes ändert, dann passiert etwas Merkwürdiges: die Richtung aller bereits abgegebenen Schüsse ändert sich mit! Das verstehe ich nicht, denn die Richtung eines Schusses wird im Create-Event eines Schusses festgelegt. Dieser wird beim nächsten Schuss aber doch neu abgearbeitet und im Step-Event steht nichts von Richtung - warum also macht er das?? Und vor allem: wie bitte kann ich das verhindern?? Habe mir schon 2 Tage und Nächte um die Ohren geschlagen, finde aber die Lösung nicht. Wäre toll, wenn mir hier jemand weiterhelfen könnte.

    Zur Verdeulichung des Problems hab ich die Steuerung mal vereinfacht und rausgenommen und hänge sie hier an die Mail. Vielleicht kann mir jemand hier weiterhelfen. Danke für Eure Mühen schon mal im voraus!
    Gruss Archie

    Hier die "Problemdatei":
    steuerung.zip
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • Servus,

    das ist ein typischer Fall von "Ich verwechsle ein Objekt und eine Instanz". Gehn wir mal genauer auf diese Materie ein, dann wird dir ganz schnell klar was falsch läuft (Ich könnte dir jetzt auch einfach sagen wo der Fehler ist, aber wir wollen ja alle etwas daraus lernen oder?).

    Okay ein Objekt ist eine Gegenstand, eine Entität die etwas in deinem Projekt bewirkt. Sie hat eine genaue Beschreibung und Definition. z.b. Obj_Bullet beschreibt wie sich Kugeln in deinem Spiel verhalten. Eine Instanz hingegen ist das was dann wirklich in einem Room keucht und fleucht. Der unterschied ist einfach:

    GML-Quellcode

    1. instance = instance_create(object,x,y);


    Wie du selbst gesagt hast, du manipuliert in Create Event von Obj_Bullet die Richtung und Geschwindigkeit von Obj_Bullet. Nur ist Obj_Bullet ein Keyword, welches das gesamte Objekt beschreibt und nicht die Instanz die du manipulieren willst. Deswegen wird in jedem Create JEDE EINZELNE Bullet verändert. Das Keyword welches du benutzen solltest währe "self", wobei du kannst das auch ganz weglassen. Stimmt in beiden fällen.

    Der Richtige Code währe also (im Create Event von Obj_Bullet)

    GML-Quellcode

    1. global.can_shoot=0;
    2. if (obj_raumschiff.sprite_index = spr_raumschiff_right) {sprite_index=spr_bullet_right; direction=0};
    3. if (obj_raumschiff.sprite_index = spr_raumschiff_up) {sprite_index=spr_bullet_up; direction=90};
    4. if (obj_raumschiff.sprite_index = spr_raumschiff_left) {sprite_index=spr_bullet_left; direction=180};
    5. if (obj_raumschiff.sprite_index = spr_raumschiff_down) {sprite_index=spr_bullet_down; direction=270};
    6. motion_set(direction,16);
    ...
  • Whow, klasse, jetzt funzt! Danke erst mal!!
    Mir war schon klar, daß ich alle obj_bullet damit beeinflusse, aber mir war nicht klar, wie ich das umgehen kann, zumal ich schon mal alles in Klammern gesetzt und mit einem "with obj_bullet" versehen hatte. Das Ergebnis war aber dasselbe.
    Also thx. für die Nachhilfe! :)
    Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • Benutzer online 1

    1 Besucher