ich kann die geschwindigkeit nicht verändern

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

  • ich kann die geschwindigkeit nicht verändern

    hi ich habe versucht die geschwindigkeit von einigen objekten zu verändern, leider ohne erfolg...

    alle objekte sollen sich nach 5 sekunden ein bischen schneller bewegen.
    aber wie programmiere ich dass?
    ich habs volgender maßen probiert..

    im Step event

    GML-Quellcode

    1. if (global.beschleunigung <= current_time)
    2. {
    3. global.enemi_speed+=100;
    4. global.beschleunigung+=5000;
    5. }


    hierbei ist global.beschleunigung auf einen anfangswert von 5000 gestellt, denn 5000 millisekunden sind 5 sekunden.
    ich wollte also das der global.beschleunigung mit current_time vergleicht, und dann volgende befehle ausführt. Offensichtlich ist das nicht möglich den mit current_time vergleichen zu lassen. gibt es noch einen anderen weg? mir hatte mal wer gesagt man könnte da was mit dem roomspeed machen, aber das hab ich nicht verstanden :S


  • Vll versteh ich dich falsch oder mir ist nicht ganz klar wo genau dein Problem liegt... aber wenn du alle 5 Sekunden eine Aktion (z.B. Geschwindigkeit erhöhen) ausführen willst dann setzt du deinen Alarm-Event einfach auf 5*room_speed.

    z.B. im Alarm[0] Event:

    GML-Quellcode

    1. global.enemy_speed += 10;
    2. alarm[0] = 5*room_speed


    damit führt der Alarm-Event sich alle 5 Sekunden selbst aus.
  • oder du machst einach im Begin Step event

    GML-Quellcode

    1. alarm[0]=5000 //oder besser du machst es als Drag&Drop und machst nen hacken bei relative //wenn du nur einmal die beschleunigung willst kein hacken bei ralative



    dann neues event
    alarm[0]

    und dort machst du

    GML-Quellcode

    1. global.enemi_speed+=100;
  • Nein, Eumi, das ist nicht ganz richtig. Das begin step event hat in etwa die gleiche Funktion wie das step event. Also würde sich der Alarm[0] event praktisch immer auf 5000 setzen.
    Desweiteren werden die Alarme nicht in Millisekunden, sondern in steps festgelegt. Für 5 Sekunden brauchst du hier also 150 (5*30 (30 = standard room_speed)) Einheiten.
  • Das liegt daran, dass du die Variable global.enemi_speed zwar erhöhst aber nirgends die geschwindigkeit der Gegner Objekte veränderst, die beiden Variablen global.enemi_speed und speed hängen nicht von einander ab...
    pack einfach noch ein 'speed = global.enemi_speed' in den Alarm Event dann gehts... oder erhöhe statt der globalen Variable einfach gleich den speed der Gegnerobjekte.
    Achja und du solltest den Speed nicht gleich um 10 erhöhen, das is abartig schnell :]
  • sry ich kenn mich mit der Funktion "parent Objekt" nicht aus, deshalb hab ich ein bisschen umgeschrieben

    Ps. ich halt das spiel so lang durch wie ich will einfach ein stück nach rechts. Die blöcke bewegen sich immer gleich.
    musste ändern....wie weiß ich ned genau aber das hilft sicher

    GML-Quellcode

    1. motion_set(random(360),global.enemi.speed
    Dateien
  • Ja ich weiß...
    Aber wie gesagt, die Variablen hängen nicht von einander ab nur weil du einmalig ne Zuweisung gemacht hast. Die Variable speed hat im Create-Event vll. den Wert von global.enemi_speed bekommen, allerdings gilt das nur einmalig. Wenn du global.enemi_speed später nochmal änderst dann bleibt die Variable speed unberührt. Die Variablen sind ja schließlich völlig unabhängig von einander und haben unterschiedliche Speicherbereiche.

    Du musst also bei jeder Änderung an global.enemi_speed auch diesen Wert wieder der Variable speed zuweisen, d.h. nach jedem

    GML-Quellcode

    1. global.enemi_speed += irgendeine Zahl;

    muss dann auch

    GML-Quellcode

    1. speed = global.enemi_speed;

    folgen damit die Änderungen auch der Variablen speed zugewiesen werden.

    Mach einfach mal das was ich gesagt habe und füge das:

    GML-Quellcode

    1. speed = global.enemi_speed;

    in deinen Alarm-Event ein, das wird funktionieren, habs selber ausprobiert.
  • So hat gnz schön gedauert.
    Das was ich für dich hab hat einige bugs...die kann man leicht "ändern" aber 100% is es nicht

    Deine Version war mir zu komplieziert(parents und variablen für keiner weiß) also hab ich ein eigenes gemacht
    hatte vorher immer wieder Probleme nimms dir einfach raus was du brauchts.

    Ps. cooles Spiel
    Dateien
  • @eumi jop danke, aber ich muss zugeben das ist nicht meine spielidee gewesen :) des game gibts schon. habs nur nachmachen wollen,

    und @Thodd, jop hast recht des funktioniert, komischer weise wird der nach den ersten 5 sekonds erst langsamer, und dann immer schneller.. muss ich noch iwie ausbügeln o.O...

    @ all, kann mir bitte mal jemand sagen wie ich des hinbekomme, das die kugeln wie beim billard abprallen? also eintritzwinkel = austritzwinkel? und dann nicht nur sagen "theoretisch musste den winkel berechnen etc" sondern am besten auch wie ich das realisiere, mit nem quelltext :)

    bittedankeschön


  • den winkel könntest du mit point_direction berechnen.
    einfach den winkel von dem Ball zum einschlag punkt an die Wand, allerdings weß ich nicht genau, wie du den berechnest.
    und dann hast schon mal den Einfallswinkel.
    Und da einfallswinkel gleich ausfallswinkel, musst du den ins negative setzen, aber ich weiß nicht ob der GM das so akzeptiert. ?(


    PS: das Spiel kenn ich, damit trainieren anscheinend Kampfpiloten ihre Reaktionsfähigkeit.
    Irgendwo hab ich das mal gespielt und dann hat man wenn man gut war, 20-30 Sekunden geschafft und dann stand dran, dass Piloten das 2 min machen müssen und das wird ja immer schneller, aber keine Ahnung ob des stimmt.
    Gruß Gamer
  • ich glaub das es nicht das ist was du egentlich meinst
    aber mit:

    GML-Quellcode

    1. hspeed*=-1
    2. vspeed*=-1

    kriegt man genau das hin weil der winkel behalten wird
    du musst nur eins weg tun

    z.B. prallt die Kugel von rechts unten an die linke wand

    GML-Quellcode

    1. hspeed*=-1

    rollt sie weiter mit dem selben wert auf Y (also nach oben) aber statt nach links im selben winkel weiter nach rechts

    Beispiel_Billiard.rar
  • @ the gamer

    ja du hast vollkommen recht, damit trainieren amerikanische kampfpiloten, und das mit den 2 minuten stimmt auch...

    übrigends ich finde den fehler einfach nicht warum die klötze erst langsamer werden und dann schneller werden.
    und das mit hspeed*=-1 geht net :S

    ich lad des aktuelle nochens hoch...
    Dateien


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Gruen ()