steuerung & speed per rechter maustaste

  • GM 8
  • steuerung & speed per rechter maustaste

    huhu,

    ich hab mal wieder ein problem. und zwar habe ich nen "uboot" welches bei nichtbewegung entweder nach rechts oder links gerichtet stehen soll.
    wenn ich es bewege-in richtung der maus- soll es nach der bewegung wieder in die ausgangsposition. je nachdem ob es nach links(image_index=1) oder rechts(image_index=0) schaut bewegt es sich stepweise wieder bis auf den ausgangspunkt( 0 / 270 ).
    das ganze funktioniert mit der rechten maustaste. also if maus = 1 ...blabla blick richtung maus , und if maus = 0 blabla wieder ausrichten auf 0 / 270. das ganze funktioniert auch...zumindest irgendwie... wenn ich jetzt aber der der maus = 1 sache nen speed=4 z.b. und direction=image_angle zugebe dann funktioniert die maus = 0 funktion nimmer, und das "uboot" geht nicht mehr in den ausgang zurück...

    ich weiss hört sich iwie strange an das ganze, um es zu verdeutlichen hier nen gml schnipsel

    GML-Quellcode

    1. //blickrichtung
    2. direction=image_angle
    3. //passende images zur blickrichtung
    4. if image_angle >0 && image_angle<90 {image_index=0}
    5. if image_angle >90 && image_angle<180 {image_index=1}
    6. if image_angle >180 && image_angle<270 {image_index=1}
    7. if image_angle >270 && image_angle<360 {image_index=0}
    8. //initialisieren der timings
    9. mousepos=point_direction(obj_uboot.x,obj_uboot.y,mouse_x,mouse_y)
    10. timer1-=1
    11. timer2-=1
    12. timer3-=1
    13. timer4-=1
    14. t2 = 180-mousepos
    15. t3 = mousepos-180
    16. t4 = 360-mousepos
    17. //timer bewegung image angle zur ausgangspose des bootes ( 0 / 270 )
    18. if timer1 > 0 {image_angle -=1};
    19. if timer2 > 0 {image_angle +=1};
    20. if timer3 > 0 {image_angle -=1};
    21. if timer4 > 0 {image_angle +=1};
    22. //rechte maustaste funktionen
    23. if maus = 1
    24. {image_angle=mousepos}
    25. if maus = 0 && image_angle =mousepos
    26. {
    27. if image_angle >0 && image_angle<90 {timer1=mousepos timer2=0 timer3=0 timer4=0}
    28. if image_angle >90 && image_angle<180 {timer2=t2 timer1=0 timer3=0 timer4=0}
    29. if image_angle >180 && image_angle<270 {timer3=t3 timer1=0 timer2=0 timer4=0}
    30. if image_angle >270 && image_angle<360 {timer4=t4 timer2=0 timer3=0 timer1=0}
    31. }
    Alles anzeigen


    im global-right-pressed maus event ist maus = 1
    im global-right-release maus event ist maus= 0

    wenn ich nun speed = 4 z.b. bei global-right-pressed eintragen möchte funktioniert die aktion im step event nimmer.
    wenn jemand duch das chaos durchsieht, und vllt noch weiss wo mein problem liegt dann wäre ich für hilfe sehr dankbar.

    mfg
  • funktioniert doch eh... ?(

    du musst statt global-right-pressed maus nur global-right maus.

    sorry funzt doch nicht so ganz, am anfag funktionierts aber wenn ich steil fahre dreht es sicht nicht mehr...
    ich schaus mir nochmal an.


    snake5

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

  • ich hab bei maus = 0 && image_angle = mousepos in maus = 0 geändert, linksrum gehts nun super, aber sobald die winkel <90 und >270 sind dreht es sich "zuviel" im winkel

    mfg

    edit

    thx hat sich erledigt, musste die if mouse = 0 abfrage aus dem step in den key release event packen und es geht... =)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von blubberkopp () aus folgendem Grund: edit

  • so da tat sich jetzt ein neues problem auf...

    ich lasse mein objekt nun richtung maus wandern, dies macht es mit direction +=5 . meine maus ist mit dem round befehlt sozusagen auf +1 gebracht. jetzt wackelt mein objekt aber, und zwar desto höher ich die direction einstelle desto doller.
    das liegt offensichtlich an den 4 grad die dazwischen hängen und das objekt nicht so recht weiss wie es sich ausrichten soll.
    gibt es eine möglichkeit den mauswinkel auch auf +5 zu setzen? damit dann sozusagen : wenn maus winkel 15 dann obj winkel 15 ...20...25 etz ?

    mfg
  • wenn ich dich richtig verstanden habe willst du den mauswinkel immer mit 5 runden.
    probiers mal mit diesen code im step-event:

    GML-Quellcode

    1. mauswinkel = point_direction(x,y,mouse_x,mouse_y);
    2. mauswinkel = (mauswinkel div 5 + sign(mauswinkel mod 5))*5;


    ich hoffe ich sag nicht schon wieder blödsinn :whistling:



    mfg.snake5