我正在联合公司执行一个武器轮,我已经解决了大部分问题,但我正在努力解决一个问题:
我的武器轮看起来有点像这个(仅举个例子):
我的是为了别的东西,而不是武器。但这不重要。
没有老鼠..。这个想法是旋转轮子左右,直到你选择了你想要的项目。所选的是最高位置的那个(上面的例子似乎是最下面的位置)。不管怎样,我让它向左右移动很好..。现在的问题是找出哪个按钮(是的,它们是作为UI按钮实现的)当前处于所选位置。
我最初的想法是
但事实证明,这确实令人头疼.例如,我发现按钮转换的位置总是0,0,直到您至少显示一次UI。所以我必须使用Update()而不是Start()。此外,试图计算重叠意味着需要将按钮的宽度添加到当前的X中,将高度添加到当前的Y中,获取像素宽度似乎不是一件容易的事情。
有什么更简单的方法吗?我怎么能在我的武器轮上有一个“选定的”按钮而不像这样大惊小怪呢?如果这真的是唯一的方法,那么请告诉我如何获得像素宽度和按钮的高度。
发布于 2020-07-16 12:37:59
好的,我使用了@DMGregory的回答(见上面他的评论)。
所以我已经在跟踪车轮的旋转角度了。然后我要做的就是把0到360之间的度标准化,然后找出哪个按钮是哪个度.就像这样:
度归一化的一种扩展方法:
public static int NormalizeCircleDegrees(this int orientation)
{
orientation %= 360;
if (orientation < 0)
{
orientation += 360;
}
return orientation;
}
然后这个方法:
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];
}
}
只要确保按钮的顺序是正确的,瞧!简单多了。
https://gamedev.stackexchange.com/questions/184381
复制相似问题