2016-10-13 5 views
0

In einem Unentschieden GUI-Ereignisse, ich habe gegeben,Game Maker Studio - Zeichnung Sprites vom Ursprung

draw_sprite(Sprite_HUD_Box,0,0,0) 

Wenn dies ausgeführt wird, die Mitte des Sprites wird auf 0,0 gesetzt. Der Ursprung des Sprites ist sein Zentrum, also wurde dies erwartet. Im gleichen Fall habe ich auch

draw_sprite(Sprite_HUD_Box,0,view_hport[0],0) 

Zu meinem Verständnis view_hport[0] die Länge des Hafens ist, so sollte das Sprit auf das entfernt rechts auf dem Bildschirm zeichnen.

Das Sprite am Ende des Hafens gezogen wird, sondern von der Mitte gezogen wird, ist es nun, als ob die gezogenen x des Koordinatenursprung wurde 0.

Wie kann ich das Sprite zu bekommen von der Mitte ziehen, wie es für die erste Linie getan hat?

Auch ich habe,

draw_sprite_ext(Sprite_Fill,0,0,0,max(Object_Player.hp,1)/Object_Player.mxhp,1,0,c_white,1) 

die von der Mitte zieht, um die Gesundheit verloren, es schrumpft nach innen. Ich möchte, dass es von rechts abnimmt und nach links geht, bis es gesundheitlich nicht mehr geht. Wie kann ich das erreichen?

Antwort

0

GUI-Ereignis verwendet eigene Größen und Position, es hängt nicht von Ansichten und Port ab. In der Regel entspricht diese Größe der Portgröße, kann aber in vielen Fällen unterschiedlich sein. Sie können die GUI-Größe mit display_set_gui_size(width, height); ändern und für die Größe können Sie display_get_gui_width(); und display_get_gui_height(); verwenden.

Um die Mitte eines Sprites zu erhalten, können Sie die Funktionen sprite_get_xoffset(sprite) und sprite_get_yoffset(sprite) verwenden.

Einige Beispiele, wie Sie Sprite auf verschiedene Weise ziehen:

var spr = Sprite_HUD_Box; 
var xoffset = sprite_get_xoffset(spr); 
var yoffset = sprite_get_yoffset(spr); 
var guiwidth = display_get_gui_width(); 
var guiheight = display_get_gui_height(); 

// Left top corner of the sprite at left top corner of the window 
draw_sprite(spr, 0, xoffset, yoffset); 

// Right top corner of the sprite at right top corner of the window 
draw_sprite(spr, 0, guiwidth - sprite_get_width(spr) + xoffset, yoffset); 

// Center of the sprite at left down corner of the window 
draw_sprite(spr, 0, 0, gui_height); 

... 
etc 

die von der Mitte zieht, um die Gesundheit verloren, schrumpft es nach innen. Ich möchte, dass es von rechts abnimmt und nach links geht, bis es gesundheitlich nicht mehr geht. Wie kann ich das erreichen?

Verwenden Sie draw_sprite_part() oder draw_sprite_pos() (es hängt davon ab, was genau Sie wollen).

+0

Ich habe draw_sprite_part verwendet, um ein Sprite zu zeichnen, jetzt habe ich auch ein anderes Sprite mit den exakt gleichen x- und y-Koordinaten gezeichnet, aber das Sprite ist nicht an der richtigen Stelle (die mit draw_sprite_part gezeichnet). Warum ist das und wie kann ich es beheben? –

+0

Teilen Sie ein kleines Beispiel mit diesen beiden Sprites. – Dmi7ry

+0

draw_sprite (Sprite_HUD_Box, 0,0 + sprite_get_xoffset (Sprite_HUD_Box) + os, 0 + sprite_get_yoffset (Sprite_HUD_Box) + OS) –

Verwandte Themen