rectangle falsche position auf android, richtige position auf windows?

  • Android

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

  • rectangle falsche position auf android, richtige position auf windows?

    Hallo, ich möchte über die gegner ein lebensbalken platzieren, auf windows geht das super, aber auf dem android sind die balken ganz wo anders????

    was könnte der fehler sein?

    danke
  • Vielleicht den Code sagen, wie du es geschrieben hast. Andernfalls hast du es auf dem falschen forum gepostet.

    Spoiler anzeigen
    Forum -> Gamemaker Studio -> Android auswählen...


    Normalerweiße sollte es, wenn es auf Windows Funktioniert hat uf dem Android auch gehen.
  • Events: Draw Gui

    Actions:

    set the color => green
    draw a rectangle x1 0 y1 -5 x2 (25/mon_maxhp)*mon_hp y2 0 filled: filled Relarive

    mehr ist das nicht, trotzdem wird es auf meinem android tablet an einer falschen position gezeichnet.
  • Dies liegt daran, dass der GUI Draw Event sich auf die Auflösung des Gerätes abstimmt. Du kannst es ganz einfach lösen:



    xratio = 800/window_get_width() // ich gehe von einer Spielauflösung (!nicht des Tablets) von 800x480 aus, sollte diese bei dir anders sein, bitte ändern
    yratio = 480/window_get_height()



    rectangle x1/xratio 0 y1/yratio -5 x2/xratio (25/mon_maxhp)*mon_hp y2/yratio 0 filled: filled Relarive





    d.h. bei allen x,y, koordinaten im GUI event und auch bei virtuellen buttons /xratio bzw /yratio setzen

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

  • Hallo nochmal, ich habe es immernoch nicht kapiert...

    also: ich habe mein room 640 x 480 groß gemacht.

    nun hat mein android gerät (Nexus 7) eine auflösung von 1280 x 736

    was muss ich jetzt genau angeben?

    xratio = 640/window_get_width()
    yratio = 480/window_get_height()



    und dann:


    rectangle x1/xratio 0 y1/yratio -5 x2/xratio (25/mon_maxhp)*mon_hp y2/yratio 0 filled: filled Relarive ?????? das raffe ich nicht, bitte schreib mal so:



    x1: blabla
    y1: blabla
    x2: blabla
    y2: blabla


    sonst sehe ich das nicht genau, danke ^^
  • x1/xratio 0 y1/yratio -5 x2/xratio (25/mon_maxhp)*mon_hp y2/yratio


    x1: 0
    y1: -5/xratio
    x2: ((25/mon_maxhp)*mon_hp)/xratio
    y2: 0


    Außerdem sehe ich jetzt, dass dein Problem außerdem auch noch woanders liegt:


    Das heißt der Variablenverlauf muss so aufgebaut sein:


    x1: 0
    y1: 0
    x2: ((25/mon_maxhp)*mon_hp)/xratio
    y2: -5/yratio
    (P.S. in keiner Weise wollte ich dich hänseln oder greteln , lediglich meine Vorstellung von Humor mit steigendem Alkoholpegel kann nicht immer als adäquat gezählt werden :) )

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

  • Hallo Fin,


    x1: 0
    y1: -5/xratio
    x2: ((25/mon_maxhp)*mon_hp)/xratio
    y2: 0


    Das heißt der Variablenverlauf muss so aufgebaut sein:
    Zitat
    x1: 0
    y1: 0
    x2: ((25/mon_maxhp)*mon_hp)/xratio
    y2: -5/yratio



    das sind nun schon 2 varianten, was soll ich denn nun nehmen?

    also ich habe das hier im create event:

    xratio = 640/window_get_width()
    yratio = 480/window_get_height()

    so da schmeißt er mir die zahlen aus.

    jetzt will ich im draw rectangel das schreiben:

    0

    -10

    50/xratio

    0/yratio


    da sagt er:


    FATAL ERROR in
    action number 1
    of Draw Event
    for object o_enemy:

    Push :: Execution Error - Variable Get -1.yratio(100005, 0)
    at gml_Object_o_enemy_Draw_64 (line 2) - action_draw_rectangle( 0, -10, 50/xratio, 0/yratio, 0 );
  • Hallo, da auch das obige ergebnis nicht die lösung war, habe ich mich selbst rangesetzt und viel ausprobiert...

    Mein Ergebnis: ich zwinge einfach allen Geräten eine Standartauflösung auf:

    display_set_gui_size(640,480)


    (geht natürlich auch mit höheren auflösungen)

    die andere "lösung" mit dem x und y... geht nur begrenzt, da nicht alle auflösungen unterstützt werden und sich somit trotzdem fehler einschleichen, trotzdem danke für die große mitwirkung und der lustigen, unlustigen bemerkungen.