Berührungen mit Blöcke sollen gezählt werden

  • GM 8

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

  • Berührungen mit Blöcke sollen gezählt werden

    Hallo, ich bins mal wieder mit einem Problem :D

    Ich habe ein Jump n Run Spiel. Jetzt will ich aber, dass wenn der Player über einen Block läuft, dass dann die Variable "bonus" auf 1 ist. Sie soll dann pro Block halt immer +1 geben. So nun mein Problem: Ich habe es so gemacht, dass wenn der Player ein Block berührt die Variable +1 wird, aber der Block wird öfters gezählt, da der Player länger als ein Step braucht um über den Block zu laufen. Also wird ein Block als 2 oder mehr gezählt.

    Hat jemand eine Anhnung, wie man das Verhindern kann?

    MFG Dufner
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • Das Problem hatte ich auch schonmal,

    ne Idee wäre das du sobald er den block berührt ne Hilfsvariable = true setzt

    :event_step: STEP Event

    GML-Quellcode

    1. if collision_point(x,y,block,true,true) and kollision = false
    2. {
    3. bonus +=1
    4. kollision = true
    5. }
    6. else if !collision_point(x,y,block,true,true)
    7. kollision = false
  • Kurzer Blick in die Hilfe
    Spoiler anzeigen
    Ausdrücke
    Ausdrücke können Zahlen (z.B. 3.4), hexadezimale Zahlen mit einem $ Zeichen (z.B. $00FFAA), Zeichenketten zwischen Anführungsstrichen (entweder die einzelnen ' oder die doppelten " ) (z.B. 'Hallo' oder "Hallo") oder kompliziertere Ausdrücke sein. Für Ausdrücke gibt es die folgenden Operatoren:

    && || ^^: kombiniert boolesche Variablen (Variablen die entweder true oder false sein können (für alle die vom RPG Maker kommen: es handelt sich hierbei um Switches, die ja entweder ON (true) oder OFF (false) sein können)) (&& = und, || =oder , ^^ = xor)
    <(kleiner als) <=(kleiner oder gleich) ==(gleich) !=(ungleich)>= (grösser oder gleich) > (grösser als) werden dazu benutzt um zu vergleichen (Ergebnis entweder true(1) oder false(0)).
    | & ^: bitweise Operatoren (| = bitweise or, & = bitweise and, ^ = bitweise xor)
    << >>: bitweise Operatoren (<< = Verschiebe den ganzen Ausdruck nach links, > > = Verschiebe nach rechts)
    + - Addition, Subtraktion
    * / div mod sind: Multiplikation, Division, Ganzzahldivision, Modulo(der Rest einer Interger(=Ganzzahl)division)

    Beachte das ein Wert von x div y dasselbe wie x/y gerundet zur nächsten Ganzzahl ist. Der mod Operator zieht den Restwert multipliziert mit dem Teiler vom Anfangswert ab. In anderen Worten, x mod y = x - (x div y) * y. Außerdem existieren die folgenden Operatoren, die nur einen Parameter übernehmen:

    !: not, Verändert "true" in "false" und umgekehrt
    -: negativiert den nächsten Wert
    ~: negativiert den nächsten Wert bitweise

    Ich denke der Teil hilft dir.
    GML lernen geht leicht :)
    1. http://www.gm-d.de/help/ (deutsch)
    2. gm-d.de/wbb/index.php/Thread/2270/ (Einsteiger-Referenz)
    3. docs.yoyogames.com/ (Hilfe auf Englisch von GM:S)
  • Um Sk.Info.k.P. Post nochmal ein wenig genauer zu deuten

    if !collision.... bedeutet eine Verneinung des ganzen, dieses Symbol gibt es so gut wie in jeder Programmiersprache die ich kenne, ( abgesehen von Brainfuck XD )
    GML ist da keine Aussnahme,....

    Also wenn Du GML lernen möchtest, dann würde ich dir raten, dich in die Grundlagen von C++, C# oder so einzulesen, dazu gibt es meines erachtens mehr Infomaterial und bessere Tutorial, GML ist dann recht leicht zu erlernen,... da ähnlich

    Grüßle Blayde