Brauche Hilfe beim " erfüllen von Bedingungen"

  • Allgemein

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

  • Brauche Hilfe beim " erfüllen von Bedingungen"

    Hi Leute, ich habe ein Problem. Wahrscheinlich ist es aber recht einfach zu lösen für euch. Aber mir räuchert der Kopf.

    Ich habe einen Spieler der sich nach links und rechts bewegen kann. Vom Fließband laufen Pakete von rechts nach links.
    Die Pakete sollen wenn "W" gedrückt wird zu dem Toren hinter den Spieler geschmissen werden(also Bewegt und gelöscht werden).

    Die Bedingungen sind:

    -Spieler ist hinter dem Packet
    -"W" taste wird gedrückt
    -Spieler ist vor einem Tor
    -Packetfarbe entspricht Torfarbe (sonst Minuspunkte)

    Ich habe einen Screenshot angehängt.

  • Na da hast du ja eh schon genau geschrieben, wie der Code aussehen soll...

    Nur die Minuspunkte würde ich beim löschen des pakets einbauen, also wenn paket.farbe != tor.farbe ist, dann instance_destroy und punkte -= 1 ansonsten += 1.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Mhmm... das hilft mir nicht weiter. Habe ich schon erwähnt das ich absoluter Anfänger bin. Ich weiß nicht so recht in welches Objekt welche if abfrage gehört. Und wie sie lauten muss, wenn der Spieler bei einem Tor steht. Habe dazu nix passendes gefunden.
  • also die Pakete heißen hier jetzt
    obj_paket1
    obj_paket2
    obj_paket3

    und die Tore:
    obj_tor1
    obj_tor2
    obj_tor3

    das in den Spieler(create):

    GML-Quellcode

    1. global.score=0


    das in den Spieler(step):

    GML-Quellcode

    1. if keyboard_check(ord("W"))
    2. if place_meeting(x,y,obj_paket1)
    3. obj_paket1.vspeed-=20
    4. if place_meeting(x,y,obj_paket2)
    5. obj_paket2.vspeed-=20
    6. if place_meeting(x,y,obj_paket3)
    7. obj_paket3.vspeed-=20


    in das erste paket objekt(obj_paket1):

    GML-Quellcode

    1. if y<-40
    2. {
    3. if place_meeting(x,y,obj_tor1)
    4. global.score+=1
    5. else
    6. global.score-=1
    7. instance_destroy
    8. }


    in das zweite paket objekt(obj_paket2):

    GML-Quellcode

    1. if y<-40
    2. {
    3. if place_meeting(x,y,obj_tor2)
    4. global.score+=1
    5. else
    6. global.score-=1
    7. instance_destroy
    8. }


    in das dritte paket objekt(obj_paket3):

    GML-Quellcode

    1. if y<-40
    2. {
    3. if place_meeting(x,y,obj_tor3)
    4. global.score+=1
    5. else
    6. global.score-=1
    7. instance_destroy}
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Danke husi012, das half mir ein ganzes Stück weiter. Ich sitze aber schon wieder ewig an neuen Problemen.

    - wenn "W" gedrückt ist fliegen alle Pakete des selben Objektes hoch
    - die Score gab mir nur Minuspunkte zurück und nun gar keine mehr
    - alle obj_pakete gleiten horizontal durch die obj_tor_ bremsen wenn sie diese von der Seite erreichen

    Im Spoiler sind nochmal 2 Screenshots.


  • Da wo du abfragst ob du das paket berührst machst du obj_paket1.vspeed-=1.3 das heißt das es auf das ganze Objekt zutrifft also auch alle instanzen des Objektes und nicht nur das was du gerade berührt hast.
    Besser wäre es das ganze im paket Objekt selbst auszuführen.

    Bei score solltest du einstellen das der Score nicht in den Minus bereich gehen kann und er nur abgezogen wird wenn er größer als 0 ist
    (also mit if(score>0) blabla..).

    Außerdem ist es unnötig 3 paket Objekte zu erstellen wenn alle den selben Code beinhalten.
    Imagine taking your usual two century long nap minding your own business when suddenly some cunt wakes you up.
    You tell him to f*ck off of course but just when you finally managed to fall asleep again the same asshole comes knocking again. I'd attack that dick too.
  • Die Abrage ob sich der Spieler auf dem Paket befindet ist zwar richtig, aber dann besagt der code dass sich das objekt paket hochwerfen soll, natürlich sind dass dann alle pakete 1 zB
    Du musst einen Weg einbauen nur diese eine instanz zu bewegen - > Stichwort ID
    oder Kollision mit; with (other)

    EDIT: war wieder mal zu langsam ^^

    Ich würde aber den Kollisionscode nicht in jedem Objekt ausführen, da dann die meisten Pakete unnötigerweise abfragen ob sie den player berühren und das wäre sehr ineffizient.
    Ansonsten kann ich DragonXZ nur Recht geben.

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

    1 Besucher