object guckt auf mauszeiger

  • GM 6
  • object guckt auf mauszeiger

    also, ich möchte das mein Raumschiff in Richtung der Maus guckt. Also einfach ins Step Event:

    GML-Quellcode

    1. image_angle = point_direction(x,y,mouse_x,mouse_y)


    Die Drehung geschiet jetzt aber sofort - das sieht bescheuert aus. Also:

    GML-Quellcode

    1. self.richtung=point_direction(x,y,mouse_x,mouse_y);
    2. if(abs(self.richtung - image_angle) < 7)
    3. {
    4. image_angle = self.richtung
    5. }
    6. else
    7. if(self.richtung > image_angle)
    8. {
    9. image_angle += 7
    10. }
    11. else
    12. if(self.richtung < image_angle)
    13. {
    14. image_angle += -7
    15. }
    Alles anzeigen


    Jetzt tut sich ein weiteres Problem auf: stellen wir uns vor, unser Raumschiff blickt in die Richtung 5°. Der Mauszeiger steht bei 355° - eigentlich könnte er also 10° im Uhrzeigersinn weitergehen und er steht bei 355°. Aber: 355 > 5, also macht mein Programm die ganze Zeit +7. Das sieht irgendwie ulkig aus, und war so auch nicht geplant. Ich hatte eine Idee von wegen richtung-image_angle>180 -> -7 anstatt +7, aber er dreht sich nur im kreis und ich seh da inzwischen nicht mehr durch, also hab ich diese idee verworfen. Lösungsvorschläge?

    bulzeep schrieb:

    wieso muss sich eigentlich die Einfachheit und Dämlichkeit von Fehlern unbedingt antiproportional zu der Zeit verhalten, die man braucht, um sie zu finden?
  • sooo, spellmaker hat das problem schon gelöst:

    GML-Quellcode

    1. ndir=point_direction(x,y,mouse_x,mouse_y);
    2. delta=7;
    3. if (abs(ndir-direction)<delta)
    4. {
    5. direction=ndir;
    6. }
    7. else
    8. {
    9. if (direction<ndir)
    10. {
    11. if (abs(direction-ndir)>=180)
    12. {
    13. direction-=delta;
    14. }
    15. else
    16. {
    17. direction+=delta;
    18. }
    19. }
    20. else if (direction>ndir)
    21. {
    22. if (abs(direction-ndir)>=180)
    23. {
    24. direction+=delta;
    25. }
    26. else
    27. {
    28. direction-=delta;
    29. }
    30. }
    31. }
    32. image_angle=direction;
    Alles anzeigen


    thema hat sich erledigt :)

    bulzeep schrieb:

    wieso muss sich eigentlich die Einfachheit und Dämlichkeit von Fehlern unbedingt antiproportional zu der Zeit verhalten, die man braucht, um sie zu finden?
  • Benutzer online 1

    1 Besucher