我正在开发一个简单的游戏,你可以在方形 Sprite 消失之前点击它们。我决定花点心思让方 block 旋转。现在,当我单击方 block 时,它们并不总是响应单击。我认为我需要围绕矩形(正方形)的中心旋转单击位置,但我不确定如何执行此操作。这是我的鼠标点击代码:
if ((mouse.LeftButton == ButtonState.Pressed) &&
(currentSquare.Contains(mouse.X , mouse.Y )))
这是轮换逻辑:
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
RotationAngle += elapsed;
float circle = MathHelper.Pi * 2;
RotationAngle = RotationAngle % circle;
我对 Xna 和一般编程都很陌生,因此非常感谢您的帮助。
非常感谢
比尔
最佳答案
所以你试图确定一个点是否在矩形中,但是当矩形旋转时?
Contains()方法仅在当前旋转为0时才起作用(我猜currentSquare是一个表示不旋转的图像位置的矩形?)。
您需要做的是在鼠标坐标上对图像进行相反旋转(鼠标坐标应围绕图像原点旋转),然后计算新位置是否在范围内当前广场。您应该能够使用向量完成所有这些操作。 (未经测试)
bool MouseWithinRotatedRectangle(Rectangle area, Vector2 tmp_mousePosition, float angleRotation)
{
Vector2 mousePosition = tmp_mousePosition - currentSquare.Origin;
float mouseOriginalAngle = (float)Math.Atan(mousePosition.Y / mousePosition.X);
mousePosition = new Vector2((float)(Math.Cos(-angleRotation + mouseOriginalAngle) * mousePosition.Length()),
(float)(Math.Sin(-angleRotation + mouseOriginalAngle) * , mousePosition.Length()));
return area.Contains(mousePosition);
}
关于c# - 鼠标在 Xna 游戏中选取旋转 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9333786/