首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >确定哪个按钮位于特定坐标处

确定哪个按钮位于特定坐标处
EN

Game Development用户
提问于 2020-07-16 10:35:22
回答 1查看 90关注 0票数 0

我正在联合公司执行一个武器轮,我已经解决了大部分问题,但我正在努力解决一个问题:

我的武器轮看起来有点像这个(仅举个例子):

我的是为了别的东西,而不是武器。但这不重要。

没有老鼠..。这个想法是旋转轮子左右,直到你选择了你想要的项目。所选的是最高位置的那个(上面的例子似乎是最下面的位置)。不管怎样,我让它向左右移动很好..。现在的问题是找出哪个按钮(是的,它们是作为UI按钮实现的)当前处于所选位置。

我最初的想法是

  1. 计算中心X,Y对的“选定”位置,并存储..。
  2. 当用户点击动作按钮进行选择时,遍历我在那个武器轮中的8个按钮。
  3. 计算循环中每个按钮的电流X和Y
  4. 如果该按钮与“选定”位置重叠,则调用该按钮的click()

但事实证明,这确实令人头疼.例如,我发现按钮转换的位置总是0,0,直到您至少显示一次UI。所以我必须使用Update()而不是Start()。此外,试图计算重叠意味着需要将按钮的宽度添加到当前的X中,将高度添加到当前的Y中,获取像素宽度似乎不是一件容易的事情。

有什么更简单的方法吗?我怎么能在我的武器轮上有一个“选定的”按钮而不像这样大惊小怪呢?如果这真的是唯一的方法,那么请告诉我如何获得像素宽度和按钮的高度。

EN

回答 1

Game Development用户

发布于 2020-07-16 12:37:59

好的,我使用了@DMGregory的回答(见上面他的评论)。

所以我已经在跟踪车轮的旋转角度了。然后我要做的就是把0到360之间的度标准化,然后找出哪个按钮是哪个度.就像这样:

度归一化的一种扩展方法:

代码语言:javascript
复制
public static int NormalizeCircleDegrees(this int orientation)
{
    orientation %= 360;

    if (orientation < 0)
    {
        orientation += 360;
    }

    return orientation;
}

然后这个方法:

代码语言:javascript
复制
private Button GetSelectedButton()
{
    int normalizedDegrees = currentRotation.NormalizeCircleDegrees();

    switch (normalizedDegrees)
    {
        case 0: return Buttons[0];
        case 45: return Buttons[1];
        case 90: return Buttons[2];
        case 135: return Buttons[3];
        case 180: return Buttons[4];
        case 225: return Buttons[5];
        case 270: return Buttons[6];
        case 315: return Buttons[7];
        default: return Buttons[0];
    }
}

只要确保按钮的顺序是正确的,瞧!简单多了。

票数 1
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/184381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档