You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:35:14