Die Größe von Objekten/Sprites pixelgenau ändern

  • GM 8
  • Die Größe von Objekten/Sprites pixelgenau ändern

    Hi :)

    Ich möchte Infotexte in einer Statusleiste anzeigen lassen, wenn der Mauszeiger über bestimmten Instanzen schwebt. Funktioniert an sich auch prima, allerdings nur, wenn die Instanzen ein Hintergrundbild eingestellt haben. Hat ein Objekt, bzw. eine Instanz kein Sprite eingestellt, sondern erzeugt nur eines mit draw_sprite (oder eben draw_text), ist es nicht anklickbar, bzw, MouseOver funktioniert nicht - es reagiert nicht. Sowas wie if (distance_to_point(sprite) oder (text) <= 0) gibt es anscheinend nicht, sondern nur für Instanzen an sich. Das bedeutet, dass man für sämtliche Instanzen pixelgenaue, unsichtbare Sprites braucht, damit die Sprites oder Texte oder was auch immer man DANACH gezeichnet hat, reagieren. Bitte korrigiert mich, wenn ich falsch liege... Ich hoffe, ich tus.

    Die Instanzen erstelle ich über ein obj_gamestart-Objekt mit instance_create(x, y, obj); und die erzeugten Objekte, bzw. Instanzen positionieren sich dann über ihre eigenen Create Events relativ zu einer Sidebar im Spiel selbst.

    Sollte es ohne unsichtbare Sprites nicht gehen, wäre meine Idee, einfach ein 1x1 Pixel großes, unsichtbares Bild bei allen Objekten einzustellen, die draw-Events ausführen und diese Bilder dann per GML auf die Größe zu ändern, die auf ein MouseOver reagieren soll.

    image_xscale und image_yscale bewirken leider nur eine relative Vergrößerung, bzw. Verkleinerung. Ist das Hintergrundbild beispielsweise 32x32 Pixel groß, wird es bei image_xscale = 2; 64x32 Pixel groß.
    Wie vergrößer, bzw. verkleiner ich aber auf Pixel? Und wie würde ich das bei Texten machen, die unterschiedlich lang ausfallen? :( Sowas wie "scale to draw_text size" mit Rahmen drumherum bräuchte ich.

    GML-Quellcode

    1. if ! (freedom) { instance_destroy(gamemaker); instance_create(x, y, html5); }
  • Klasse! :) Damit kann man auch die Größen unterschiedlich langer Texte (oder auch unterschiedlich großer Sprites) miteinbeziehen und Dinge daran ausrichten, z.B. um einen Rahmen um einen immer unterschiedlich langen Text mit draw_rectangle zu packen.

    Muss ich mal mit herumexperimentieren... Vielen Dank :)

    GML-Quellcode

    1. if ! (freedom) { instance_destroy(gamemaker); instance_create(x, y, html5); }

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

  • Benutzer online 1

    1 Besucher