Jump 'n Run view drehen, HUD-Probleme

  • GM 8

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

  • Jump 'n Run view drehen, HUD-Probleme

    Hallo.
    Bei meinem Jump & Run Spiel soll mein Spieler an der Decke laufen können, dies sowie das drehen des Views funktioniert ohne Probleme. Nun bekomme ich aber Probleme mit meinem HUD. Da ich hauptsächlich Surfaces benutze, kann kann ich die ganz einfach drehen, jedoch gehn mir dann meine Maus Abfragen verloren. Habt ihr Ideen wie man das vernünftig lösen kann?
    lg Partik

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

  • Nein, leider ist das nicht so einfach. Ich zeichne mein Hud auf verschiedene Surfaces, da diese sich unabhängig voneinander bewegen können sollen. Sie werden zwar gegen den View gedreht, so dass alles richtig angezeigt wird,jedoch drehen sich die maus abfragen mit, dadurch sind Buttons nur anklickbar, wenn man auf die andere seite ins nichts klickt. Ich muss irgendwie die Maus abfragen mitdrehen, aber ich weiß nicht wie
  • Die Mausabfragen mittdrehen geht leider schlichtweg nicht. Zumindest nciht wenn du die GM-eigenen Maus-events benuzt.

    Du musst wohl oder übel die Objekte mit-bewegen oder du verzichtest auf die GM-internen Events und löst die mouse-enter/click/release evnts usw. anhand einer eigenen Maus-koordinate im Step event aus. Wennd as Hud auf dem Kopf steht, dann kann man diese Variablen dann umrechnen.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Huh? was für Mausabfragen benutzt du denn dann?

    Zudem, wird das Hud denn wirklich gedreht oder nur gespiegelt?
    Also ist oben dann auch links und rechts vertauscht oder nicht?

    Das ganze ist nicht soi einfach, aber mit etwas Logik lässt sich das lösen:

    Also wenn wir sagen dass das HUD einfach nur um den Mittelpunkt des Bildschirms um 180° gedreht wurde. Dann wären die x-Koordinaten der neuen Maus:

    new_mouse_x = view_xview[1]+view_wview[0]-(mouse_x-view_xview[0]);
    Zuerst wird der x-Wert des Views genommen, dazu wird die Breite des Views adiert --> rechter Rand des Bildschirms.
    Nun muss die Mauskoordinate von der anderen Seite abgezogen werden wofür der relative (relativ zum view_xview[0]) Wert der Maus genommen werden muss.

    Für die y-Achse sieht das dann genau so aus:
    new_mouse_y = view_yview[1]+view_hview[0]-(mouse_y-view_yview[0]);

    Wenn das HUD nur gespiegelt wird, dann bleiben die x-Kpoordinaten die der normalen Maus und nur der y-Wert wird wie beschrieben verändert.


    Keine Ahnung ob das ganz richtig ist.. hab das jetzt nur mit einer kleinen Hilfszeichnung geschrieben...

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Ja, das müsste gehen. Mausabfragen laufen bei mir momentan über mouse_x >= [...]. Aber was mir grad einfällt: sollte das nicht auch funktionieren, wenn ich einfach nur noch per display_get_mouse_x() abfrage?
    da ich das HUD ja schon drehe, müssten diese Abfragen ja stimmen. Und Ja, ich drehe den view per view_angle[0] um 180°.
  • Wiso denn display_get_mouse_x()?
    Die Funktion gibt dir die Maus auf deinem Bildschirm zurück, also komplett unabhängig davon was gedreht ist und was nicht.

    Du könntest es mit der window_view_mouse_get_x(id) Funktion versuchen! Diese gibt die Koordinate _im View_ zurück. Hab noch nie getestet was dann passiert wenn man einen View dreht. Vieleicht gibt das genau das aus was du brauchst.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

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

  • Oh sorry, natürlich meinte ich window_get_mouse... Da sich mein View dreht, ich das Hud aber in die Gegenrichtung mitdrehe, liegen die mausabfragen auf der Falschen seite, wenn ich die Mausabfragen aber per window_mouse... mache, liegen sie immer an der selben stelle, da sich das Fenster ja nicht dreht, und das Hud hab ich ja schon gedreht. Ich probier das mal aus, danke für den Denkanstoß, deinen Pseudocode habe ich bei einer anderen Sache, die nichts mit dem Hud zu tun hatte gebrauchen können.