如何在GMS2中按弧形绘制精灵并调整绘制顺序?
解决魔法球UI排列顺序问题
要让魔法球从生命值底部开始逆时针排列,第一个为深红色球,你需要调整角度的起始点和计算方式,适配GameMaker的坐标系特性(y轴向下):
问题分析
你当前的代码从0弧度(右侧)开始顺时针排列球,导致位置和顺序不符合需求。需要改为从正下方(对应π/2弧度,GameMaker中y轴向下时,sin(π/2)=1对应y轴正方向,即屏幕下方)开始,按逆时针方向排列。
修正后的代码
//Mana UI for (var i=0; i<5; i++) { // 起始角度设为π/2(正下方),每次逆时针偏移0.15π var theta = 0.5*pi + i*(0.15*pi); draw_sprite(spr_mana_orb, 0, _centerx + 28*cos(theta), _centery + 28*sin(theta)); }
代码说明
theta = 0.5*pi + i*(0.15*pi):设置起始角度为π/2(正下方),每循环一次角度增加0.15π。由于GameMaker的y轴向下,角度递增会让球向左上方移动,正好对应逆时针排列的需求。- 当
i=0时,球位于正下方(深红色球的位置),i递增时,球依次向左上方排列,最后i=4时到达最左上方的白色球位置,同时绘制顺序也符合你“先深红后白色”的要求。
如果你习惯用标准数学坐标系的角度逻辑(y轴向上),也可以用以下写法,通过y坐标取反来适配GameMaker:
//Mana UI for (var i=0; i<5; i++) { // 起始角度设为3π/2(正下方,标准数学坐标系),每次逆时针偏移0.15π var theta = 1.5*pi - i*(0.15*pi); draw_sprite(spr_mana_orb, 0, _centerx + 28*cos(theta), _centery - 28*sin(theta)); }
内容的提问来源于stack exchange,提问作者Misticloud
相关产品推荐
相关产品推荐

