geschwindigkeit verändern

  • GM 8
  • geschwindigkeit verändern

    moin, ich habe (*hust*mal wieder) ein kleines problemchen ...
    ich versuche die geschwindigkeit von einem Spieler zu verändern (er kann oben,unten,rechts, und links laufen).
    er hat am anfang die geschwindigkeit "7".
    wenn er jetzt ein bestimmtes objekt berührt, soll er die geschwindigkeit "11" bekommen.
    wie kann ich das machen? (ich hab gedacht das funktioniert mit "relativ" oder so, bekomme es aber nicht hin..)
    ja, ja, ich weiß, ich könnte auch den "Spieler" in einen schnelleren Spieler umwandeln lassen, das ght aber nicht, da es einen anderen grund hat...

    könnte mir das jemand erklären(oder mir das mit dem relativ erklären?(oder mir ein example geben...))

    gruß tobi
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

  • Wie hasst du dein Bewegensystem ? mit hspeed/vspeed oder mit den Koordinaten? Wieso nutzt du nicht einfach eine extra Variable dafür.
    z.B.

    GML-Quellcode

    1. hspeed = h_speed; //und h_speed ist jetzt 7 und sobald du was berührst setzt du h_speed auf 11

    oder

    GML-Quellcode

    1. y += y_speed; // und da setzt du halt auch y_speed am anfang auf 7 und sobald du was berührst auf 11


    Ich weiß nicht ob du das so meinst... Am besten du zegst uns mal wie du deinen Charackter bewegst.

    btw: für ein "moin" ist es doch relativ spät, findest du nicht? :thumbup:

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • ich habe die variante D&D mit moving direction(wenn du verstehst was ich meine ...)
    o.k. mit variablen kenn ich mich nicht aus ;) kannst du mir (*kurz*) zeigen wie ich das genau mit variablen mache?
    EDIT: Der Spieler soll schneller werden durch einen Bonus-objekt den er berührt...
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

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

  • Ins Create Event vom Spieler:

    GML-Quellcode

    1. speed=7


    Und anstatt bei der Aktion die dein Spieler bewegt den Speed 7 einzutragen trägst du einfach nur ein "speed"

    ins Step-Event:

    GML-Quellcode

    1. if place_meeting(x,y,obj_Rolltreppe)
    2. {
    3. speed=11
    4. }
    5. else
    6. {
    7. speed=7
    8. }


    obj_Rolltreppe kannst du ausstauschen mit dem Namen des Objekts das dein Spieler schneller macht.
  • ähm... rohkar: 1. mein spieler bewegt sich dann die ganze zeit nur nach rechts wenn ich das mache was du mir gezeigt hast.
    2. Dieser Bonus verschwindet(wird deleted) wenn der spieler in berührt, das heißt, mein spieler wird wegen dem step-event nur für eine millisekunde schnell, der bonus verschwindet, und er bekommt wieder speed 7.

    (Nicht böse gemeint rohkar ;) )

    ich meine, ich kann den spieler mit den Pfeiltasten auf "speed 7" bewegen. und er soll sich nur bewegen wenn ich das drücke.(hab ich so eingestellt), und wenn ich einen bonus mit dem spieler berühre, soll er sich immer noch mit den pfeiltasten steuern lassen. halt nur mit "speed 11" . weißt du jetzt was ich meine?
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

  • Ich versteh das nicht ganz. Du hast die "Lite" Version vom Game Maker 8.1 und bist GML Fortgeschrittener? Man kann ja GML in Lite benutzen, aber doch nicht alle Funktionen... Oder lieg ich da falsch?! Nein, oder? Aber jetzt zu deiner Frage:
    __________________________________________________________________________________________________________________________________________
    Probier doch mal das: *klick*
    Ich glaube, was du brauchst ist folgendes:

    GML-Quellcode

    1. if place_meeting(x,y,obj_[DEIN BONUS]) {
    2. //Für Pfeiltaste nach oben
    3. motion_set(90,11)}
    4. else
    5. {
    6. motion_set(90,7)}

    if place_meeting(x,y,obj_[DEIN BONUS]) {
    //Für Pfeiltaste nach unten
    motion_set(270,11)}
    else
    {
    motion_set(270,7)}

    GML-Quellcode

    1. if[/b] [color=maroon]place_meeting[/color]([color=maroon]x[/color],[color=maroon]y[/color],obj_[DEIN BONUS]) {
    2. //Für Pfeiltaste nach links
    3. [color=maroon]motion_set(180,11)[/color]}
    4. [b]else[/b]
    5. {
    6. [color=maroon]motion_set(180,7)[/color]}

    [b]

    GML-Quellcode

    1. if[/b] [color=maroon]place_meeting[/color]([color=maroon]x[/color],[color=maroon]y[/color],obj_[DEIN BONUS]) {
    2. //Für Pfeiltaste nach rechts
    3. [color=maroon]motion_set(0,11)[/color]}
    4. [b]else[/b]
    5. {
    6. [color=maroon]motion_set(0,7)[/color]}

    Und für das "NoKey"-Event:

    GML-Quellcode

    1. motion_set(360,0);

    Aber das geht nur, wenn du die Pfeiltasten drückst, wenn du auch das Objekt schon berührt hast, normalerweise gehört das ins Step-Event...
    Aber eine andere Lösung als das oder in ein anderes Objekt zu konvertieren hab ich jetzt auch nicht :(
    Hoffe das hilft dir einwenig...
    Aber normalerweise ist das von Rohkar richtig!

    DigitalClark

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

  • ich denke "fortgeschrittener" heißt das ich mich schon ein wenig gut mit GML auskenne oder?
    dein GML code probier ich mal aus ;) ...
    EDIT: ähm... irgendwie mach ich das falsch, und bekomme das nicht hin... kann mir jemand ein example machen, mit einem spieler und einem bonus? wäre nett
    EDIT2: sry für doppelpost...mein fehler ;)

    gruß tobi
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

  • Tobias13 schrieb:

    ich denke "fortgeschrittener" heißt das ich mich schon ein wenig gut mit GML auskenne oder?

    Nicht nur "ein wenig gut", sondern, dass du die gesamte Syntax verstehst + kannst und die gängigsten Funktionen.
    Außerdem, solltest du die Hilfe komplett gelesen haben.

    Zu deiner Frage:
    Ins create event des Players:

    GML-Quellcode

    1. speed_mult = 7; // Die Geschwindigkeit.
    2. met = false; // Darin wird gespeichert, ob der Player schon beim letzten step mit dem Powerup zusammengestoßen ist.

    Step event:

    GML-Quellcode

    1. if ( place_meeting( x, y, obj_powerup ) ){
    2. if ( !met ){
    3. speed_mult += 4;
    4. met = true;
    5. }
    6. }
    7. else{
    8. met = false;
    9. }
    10. if ( keyboard_check( vk_left ) ){
    11. x -= speed_mult;
    12. }
    13. if ( keyboard_check( vk_right ) ){
    14. x += speed_mult;
    15. }
    16. if ( keyboard_check( vk_up ) ){
    17. y -= speed_mult;
    18. }
    19. if ( keyboard_check( vk_down ) ){
    20. y += speed_mult;
    21. }
    Alles anzeigen


    Hoffentlich war das hilfreich.

    PS: Clark, warum sind so viele BB-Codes in deinem GML code? :D
    - Tobi97
    8|
  • ich glaube euch allen das ihr das richtig macht. nur ich glaub ich habe anscheinend schon vorher ein fehler gemacht beim spieler, so dass es gar nicht funktionieren kann. ich schreibe einmal den kompletten spieler und bonus:

    Spieler:

    create-event:


    code: 1.speed_mult = 7;
    2.met = false;

    step-event:


    code: 1.if ( place_meeting( x, y, Bonus ) ){
    2.if ( !met ){
    3.speed_mult += 4;
    4.met = true;
    5.}
    6.}
    7.else{
    8.met = false;
    9.}
    10.
    11.if ( keyboard_check( vk_left ) ){
    12.x -= speed_mult;
    13.}
    14.if ( keyboard_check( vk_right ) ){
    15.x += speed_mult;
    16.}
    17.if ( keyboard_check( vk_up ) ){
    18.y -= speed_mult;
    19,}
    20.if ( keyboard_check( vk_down ) ){
    21.y += speed_mult;
    22.}

    (D&D) press up: moving direction; oben geschwindigkeit: 7
    (D&D) press reight: moving direction; rechts geschwindigkeit: 7

    (D&D) press down: moving direction; unten geschwindigkeit: 7

    (D&D) press left: moving direction; links geschwindigkeit: 7


    (ich habe es auch versucht, in dem ich die D&D sachen rausgenommen habe... er will sich einfach nicht verschnellern!)

    (D&D) release up: moving direction; X geschwindigkeit: 0
    (D&D) release right: moving direction; X geschwindigkeit: 0

    (D&D) release down: moving direction; X geschwindigkeit: 0

    (D&D) release left: moving direction; X geschwindigkeit: 0

    Bonus:

    collision with Spieler: delete instance (also soch selbst, denn er soll ja verschwinden nach der verwendung)
    Hilfe :( ich bitte um ein kleines example...
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

  • Tobias13 schrieb:


    (D&D) press up: moving direction; oben geschwindigkeit: 7
    (D&D) press reight: moving direction; rechts geschwindigkeit: 7

    (D&D) press down: moving direction; unten geschwindigkeit: 7

    (D&D) press left: moving direction; links geschwindigkeit: 7


    (ich habe es auch versucht, in dem ich die D&D sachen rausgenommen habe... er will sich einfach nicht verschnellern!)

    (D&D) release up: moving direction; X geschwindigkeit: 0
    (D&D) release right: moving direction; X geschwindigkeit: 0

    (D&D) release down: moving direction; X geschwindigkeit: 0

    (D&D) release left: moving direction; X geschwindigkeit: 0

    Kannse getrost löschen, dann muss es einfach funktionieren.

    - Tobi97
    8|
  • So... jetzt funktioniert es endlich! danke ;)
    ich habe es jetzt so gemacht, das wenn der spieler einen bonus berührt hat, das der bonus das macht:
    alarm[0]=2


    alarm 0 event: destroy instance

    irgendwie funktioniert es nur dann wenn ich es so gemacht habe...
    jetzt gibt es nur ein anderes Problem...
    ich habe versucht einen weiteren Bonus zu machen:
    wenn der Spieler ihn berührt, soll er um um 3 speed abgezogen bekommen

    ich habe einen 2ten a piece of code gemacht mit dem gleichen code wie mit dem schnellen bonus nur bisschen geändert:

    1.if ( place_meeting( x, y, Bonuslangsam ) ){

    ...
    3.speed_mult -= 3;
    ...


    nur wenn ich das einfüge, ich sag mal "übertreibt" der spieler. nur bei einer berührung mit einem bonus geht der spieler auf speed ca. 100. wenn ich den langsamen bonus rausnehme, dann läuft wieder alles normal..(also der spieler wird beim schnellen bonus nur auf speed +4...)


    Zu meiner frage:


    Wie kann ich den Spieler 2 verschiedene Bonus einfügen, ohne das gleich alles buggy ist? (zu die die das nicht wissen: buggy heißt fehlerhaft ;) ) oder ich bekommendlich mal ein example :thumbup:
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

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