Game Maker Studio - 从原点绘制精灵

时间:2016-10-13 19:46:51

标签: game-maker

在绘制GUI事件中,我放置了

draw_sprite(Sprite_HUD_Box,0,0,0)

当执行此操作时,精灵的中间位于0,0。精灵的起源是它的中心,所以这是预料之中的。在同一事件中我也有

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

据我所知view_hport[0]是端口的长度,所以应该将精灵绘制到屏幕的最右边。

精灵在端口的末尾绘制,但不是从中心绘制,而是现在绘制它,好像原点的x坐标是0。

如何从中心绘制精灵,就像第一行一样?

另外,我有,

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

从中心抽取,因为失去了健康,它向内收缩。我希望它从右边减少,向左走,直到它们没有健康。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

GUI事件使用自己的大小和位置,它不依赖于视图和端口。通常这个大小等于端口大小,但在很多情况下可能会有所不同。您可以使用display_set_gui_size(width, height);更改GUI大小,对于获取大小,您可以使用display_get_gui_width();display_get_gui_height();

为了获得精灵中心的坐标,你可以使用函数sprite_get_xoffset(sprite)sprite_get_yoffset(sprite)

一些例子,你如何以不同的方式绘制精灵:

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
  

从中心抽取,因为失去了健康,它向内收缩。我希望它从右边减少,向左走,直到它们没有健康。我怎样才能做到这一点?

使用draw_sprite_part()draw_sprite_pos()(取决于您想要的内容)。