Objekt schubsen

  • GM 7

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

  • Objekt schubsen

    Also ich habe folgendes Problem:

    Ich will ein Objekt mit Hilfe der Maus "anschubsen".
    Die Maus ist dabei selber ein Objekt (rund).

    Dazu habe ich dem Objekt, was angeschubst werden soll einfach gesagt, dass es, sobald es mit dem Mausobjekt kollidiert die Geschwindigkeit und die Direction der Mausbewegung übernehmen soll.
    Im Step Event bremst das Objekt dann bis es irgendwann eine Speed von 0 hat.

    Das klappt soweit ganz gut, allerdings nur, wenn die Speed der Maus nicht zu groß ist (bis 10).
    Es kommt nicht selten vor, dass die Speed unendlich groß ist, wenn die Maus mit dem Objekt kollidiert, und dann flitz das Objekt nur so durch die gegend, und kann kaum noch abbremsen.
    Ich habe dann versucht, dass das Objekt die Speed nur annehmen soll, wenn sie kleiner als 10 ist und falls sei größer ist, die speed gleich 10 setzt.
    Doch dann ist es so, dass das mausobjekt mit dem objekt überlappt, und dann quasi gar nichts mehr geht.

    Ich hoffe ihr versteht mein Problem, und könnt mir einen geschickten Denkansatz geben, wie ich es lösen könnte, da mir die Ideen ausgehen...
  • Wenn ich dich richtig verstehe, sollte das helfen: Versuch doch mal eine variable zu machen, die normal auf false ist, sobalt die maus mit deinen Ojekt kolidiert, übernimmt das objekt das geschubst werden sollt die direction und den speed, mit max 10 speed, und die variable wird auch true gesetzt. Dann startest du ein alarm von zb, 5 steps, das dann die variable auf wieder auf false stetzt. Wenn du dann auch noch ein if um das mit der kollision und setztung der variable machst, das nur zulässt die variable auf false ist.

    Ok, das war ein bissn verwirrend, lass es mich noch mal versuchen:

    create
    kollidet=false

    step
    if (der code der bescheid sagt ob ein kollision mit maus und obj war)
    {
    if (kollision==false)
    {
    //Dass was den speed und direction setzt, plus alarm[0]=5, plus kollidet=true.
    }
    }


    alarm
    kollidet=false
  • So in etwa hatte ich es auch schon versucht, nur habe ich die variable nicht per alarm wieder auf false gesetzt, sondern erst, wenn das zu schubsende objekt wieder steht. (also speed = 0 hat)

    Ich sag mal so: das klappt auch wunderbar. Also es gibt eigentlich keine Probleme, aber ist sieht auf deutsch gesagt sch**** aus, weil das nicht wie schubsen oder anstoßen aussieht, weil man halt mit der maus über das objekt drüber kann und dass dann mehr wie ziehen aussieht. (ich hoffe ihr könnt euch das vorstellen ;) )

    Es würde zur aller größten not gehen, weil es halt funktioniert, aber es sieht halt nicht nach schubsen oder anstoßen aus...
    Vielleicht habt ihr da ja noch ideen...
  • 2sachen:

    1. du darfst nicht nur den halben speed des mausobjektes übernehmen, ich weiß dass das nicht so schön ist, aber sonst kannst du ja drüberstreichen.
    2. ähhm, vergessen 8|

    ach ja, nur mal so am rande, das waswir hier so machen kommt dann sehr nah an eine physiks engine, um genau zu sein, es ist schon eine.

    Es gibt da die nette funktion move_bungie(advanced) // glaub ich, die sollte einem schon den größten teil der arbeit abnehmen, nur noch dass das object dann auch noch energie vom anderem object aufnehmen kann fehlt noch. Ich habs mal gaaanz neu gemacht, und im collisions event von object0 das hier gemacht:

    GML-Quellcode

    1. if speed<1
    2. {
    3. direction=point_direction(object3.x,object3.y,object3.xprevious,object3.yprevious)+180
    4. speed=point_distance(object3.x,object3.y,object3.xprevious,object3.yprevious)
    5. }
    6. else move_bounce_all(true)


    Naja, es funkt ein bissn, nur nicht ganz, aber vieleicht hat irgendjemand sonnst noch eine Idee. ?(
  • whiterock schrieb:

    GML-Quellcode

    1. if cursorkugel.speed > 10
    2. {
    3. cursorkugel.speed = 10
    4. }

    also sobald wie du gesagt hast der speed größer ist übernimmt er den speed noch aber minimiert ihn falls er größer als 10 ist auf 10 :rolleyes:


    Basti schrieb:

    Also ich habe folgendes Problem:
    [...] Ich habe dann versucht, dass das Objekt die Speed nur annehmen soll, wenn sie kleiner als 10 ist und falls sei größer ist, die speed gleich 10 setzt.
    Doch dann ist es so, dass das mausobjekt mit dem objekt überlappt, und dann quasi gar nichts mehr geht.
  • Benutzer online 1

    1 Besucher