Pinball-Problem

  • GM 8

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

  • Pinball-Problem

    Hallo Leute!
    Ich bin Momentan dabei,ein Pinball Spiel zu entwerfen!Wie im Präfix schon erwähnt benutze ich GM8.Mein Problem besteht darin,dass der
    Ball immer schneller wird und letzendlich auch die Kollisionsevents den Ball nicht abhalten aus dem Room zufliegen.Ich habe überhaupt keine
    Ahnung wie ich die Geschwindigkeit begrenzen soll.Meine Gravitationswerte sind: direction:270 gravity:1
    Mein zweites Problem liegt darin,dass die beiden Flipper,die sich jeweils durch die rechte und linke Pfeiltaste bedienen lassen(dann wechselt das Sprite,und per Alarm mit dem Stepwert 5 stellt sich das Sprite jede 6tel Sekunde automatisch wieder zurück)Aber wenn ich die jeweilige Pfeiltaste nicht loslasse,stellt sich das Sprite auch nicht zurück,wie ändere ich das?
    Das dritte Problem ist,dass der Flipper den Ball nur ca. jedes 2te mal zurückhaut(per collision)woran liegt das?
    Danke schon mal im Vorraus das ihr eure Freizeit für einen Noob Progammierer verschwendet^^
    MfG Flozzel
    Ich hasse Game Maker ( :gmlove: )
  • Dann lass die Gravitation weg und ersetzt es mit Move fixed? Dann Relativ einfach weglassen und schon wird der Ball nicht schneller.
    Die Zweite Frage versteh ich nicht^^...

    Das 3. Evtl an der Geschwindigkeit? hast du auch das Bounce event dort verwendet?


    Ich kann mir leider überhaupt nicht vorstellen wie dein Spiel aussieht... Also ist oben ein Computer, der Gegen dich spiel oder wie?
    mfg Salmi
  • Ich kann mir leider überhaupt nicht vorstellen wie dein Game aussieht

    Das ist ja auch nicht von belangen, also, als Tipp damit der Ball nicht immer raus fliegt, mach alle Wand-Objekte Solid.
    (das hilft zwar nicht immer aber schonmal etwas)
    Ich denke mal du benutzt im Kollisions-Event mit der Mauer das ganz normale "Drag&Drop"-Kästchen Apprallen.
    Soweit ich weiß gewinnt dabei dein Kugel-Objekt jedes mal ca. das doppelte an Speed.
    Heißt wenn es da mit Speed 10 gegen kracht, hat es danach 15-20. So war das bei mor damals immer.
    Du könntest ja ins Kollision-Event einen Alarm machen auch so mit ca. 5 Steps, der die Geschwindigkeit halbiert.

    // Lucke.
    @7rust-dev
  • Flozzel schrieb:

    Ich habe überhaupt keine
    Ahnung wie ich die Geschwindigkeit begrenzen soll.

    Für eine physikalisch sinnvolle Lösung reicht es bereits, soetwas wie Reibung zu implementieren, damit meine ich jedoch nicht die GM interne Reibung, denn diese ist leider nicht anspruchsvoll genug dafür, da sie einfach nur konstant ist. In der Praxis nimmt die Reibung mit der Geschwindigkeit zu, und entspricht irgendwann genau der Beschleunigung (in deinem Fall der Wert von gravity), dann heben sich Reibung und Beschleunigung genau auf, und die sogenannte Endgeschwindigkeit ist erreicht. Du könntest also einfach in jedem Step einen Wert von der Geschwindigeit abziehen, der proportional zur Geschwindigkeit ist:

    GML-Quellcode

    1. // 0.9 * speed = speed - 0.1 * speed
    2. speed := 0.9 * speed;

    So würde immer 10% von der Geschwindigkeit abgezogen werden, d.h. bei einer Geschwindigkeit von 10 bliebe 9 übrig, gravity würde wieder 1 hinzufügen in deinem Beispiel, die Geschwindigkeit bliebe also konstant bei 10. Der genaue Faktor muss natürlich entsprechend deiner Beschleunigung und deiner Vorstellung der Endgeschwindigkeit angepasst werden.
  • Danke erstmal für die Hilfe!
    Also ich meine dass die Flipper mit denen man den Ball hochschleudert.Der rechte Flipper lässt sich mit der rechten Pfeiltaste bedienen,der
    linke mit der linken Pfeiltaste,in der Zeit in der man die entsprechende Taste drückt geht der Flipper hoch,indem sich das Sprite ändert,aber ich möchte das er wieder runtergeht auch wenn man die Taste gedrückt hält.
    Zum anderen:
    Sorry,aber von GML wollte ich erstmal die Finger lassen.Welchen Speed muss ich den begrenzen?Ich habe mal versucht den Vertical Speed
    per alarm alle 6 Steps zu begrenzen,dass lässt meine Kugel aber komische Bewegungen machen oder lässt sie in der Wand hängen.
    Ach ja und meine Wände sind Solid!
    MfG Flozzel
    Ich hasse Game Maker ( :gmlove: )
  • ich assoo ich dachte du machst eine art Tischtennis.. also wo man ein Bord hat mit dem man hinundherfahren muss um den ball wieder an den Gegner zurückzuschleudern... Wenn das so ist solltest du natürlich gravity nehmen^^...

    Du willst also, das der Speed immer schneller wird, wenn er runter fliegt, nur eben nicht zu schnell...? Andernfalls müsstest du einfach das relativ häckchen weglassen ;)

    Wenn du angenommen hast:
    Vertical Speed = 5 und Relativ... Dann wird es immer schneller...

    Ich wüsste die Lösung nur mit dem Code... Er ist sehr simple^^..:

    GML-Quellcode

    1. if speed > 10 speed = 10


    so wird der speed des Balls maximal 10. Das müsstest du nur ins Step event reinkopieren... Wie schnell der Ball nun wirklich werden soll ist deine Sache ;)

    Hoffentlich klappt's so :D
    mfg Salmi
  • Danke erstmal,das geht schon in meine Richtung,ist aber noch immer nicht ganz richtig.Mir ist aufgefallen das wenn die Flipper unten sind der Ball auch wieder hochspringt,aber eigentlich soll er den Flipper nur runterrollen,wie mache ich das,das wenn der Flipper unten=runterrollt und Flipper oben=hochspringt?
    MfG Flozzel
    Ich hasse Game Maker ( :gmlove: )
  • Na das machst du in dem du deinem Flipper nen Wert zu teilst (o und 1)

    0 = er ist unten
    1 = er ist oben

    und im Kollisionsevent fragst du dann ab wie die Position des Flippers(0,1) ist und leitest dann entsprechend eine aktion ein.

    ABER selbst wenn der Flipper unten ist wäre es doch sinnvoll den Ball abprallen zu lassen und nicht wie einen Magnet am Flipper plötzlich fest zu saugen ^^


    so far,

    Electro