gpt4 book ai didi

c# - 鼠标在 Xna 游戏中选择一个旋转的 Sprite

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:53 26 4
gpt4 key购买 nike

我正在开发一款简单的游戏,您可以在方形 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com