【问题标题】:Game Maker Studio - Drawing Sprites from originGame Maker Studio - 从原点绘制精灵
【发布时间】:2016-10-13 19:46:50
【问题描述】:

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

draw_sprite(Sprite_HUD_Box,0,0,0)

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

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

据我了解view_hport[0] 是端口的长度,因此应将精灵绘制到屏幕的最右侧。

sprite 在端口的末端绘制,但不是从中心绘制,而是现在绘制为原点的 x 坐标为 0。

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

我也有,

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

它从中心抽出,因此当失去健康时,它会向内收缩。我希望它从右侧减少,然后向左移动,直到他们耗尽健康。我怎样才能做到这一点?

【问题讨论】:

    标签: game-maker


    【解决方案1】:

    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()(这取决于你到底想要什么)。

    【讨论】:

    • 我已经使用 draw_sprite_part 绘制了一个精灵,现在我还绘制了另一个具有完全相同的 x 和 y 坐标的精灵,但是精灵不在正确的位置(使用 draw_sprite_part 绘制的那个)。为什么会这样,我该如何解决?
    • 与这两个精灵分享一个小例子。
    • draw_sprite(Sprite_HUD_Box,0,0+sprite_get_xoffset(Sprite_HUD_Box)+os,0+sprite_get_yoffset(Sprite_HUD_Box)+os)
    • draw_sprite_part(Sprite_HUD_Fill,0,0,0,sprite_get_width(Sprite_HUD_Fill) * (max(Object_Player.hp,1)/Object_Player.mxhp),sprite_get_height(Sprite_HUD_Fill),0+sprite_get_xoffset(Sprite_HUD_Box)+ os,0+sprite_get_yoffset(Sprite_HUD_Box)+os)
    • 不,我的意思是 GMS 项目(我想同时查看 - 代码和精灵)。 File -> Export 并在 dropbox/etc 上分享。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多