Math XNA跟踪旋转的像素位置

Math XNA跟踪旋转的像素位置,math,xna,2d,rotation,tracking,Math,Xna,2d,Rotation,Tracking,我正在xna做一个游戏,一辆坦克必须在地形上移动。 我需要能够找到底部的坦克时,它是旋转的,所以我可以让它上下移动,因为球员通过景观 例如,如果有一个精灵位于,其左上角为400300,并且我将其围绕中心旋转45度,那么如何找到底部轨迹的新位置 谢谢 谢谢你的回复,兰戈德 我以前看过文章链接,但不明白它是如何工作的 我正在做一个2d侧滚游戏。当玩家左右移动时,坦克也必须倾斜以跟随地形轮廓 我有两个向量,分别存储轨迹的后底部和前底部 我试过了 Vector2 backBottom = new Ve

我正在xna做一个游戏,一辆坦克必须在地形上移动。 我需要能够找到底部的坦克时,它是旋转的,所以我可以让它上下移动,因为球员通过景观

例如,如果有一个精灵位于,其左上角为400300,并且我将其围绕中心旋转45度,那么如何找到底部轨迹的新位置

谢谢


谢谢你的回复,兰戈德

我以前看过文章链接,但不明白它是如何工作的

我正在做一个2d侧滚游戏。当玩家左右移动时,坦克也必须倾斜以跟随地形轮廓

我有两个向量,分别存储轨迹的后底部和前底部

我试过了

Vector2 backBottom = new Vector2(5, 25);
Vector2 frontBottom = new Vector2(5, 32);

backBottom = Vector2.Transform(backBottom+position, Matrix.CreateRotationZ(angle));
frontBottom = Vector2.Transform(frontBottom+position, Matrix.CreateRotationZ(angle));

但这给了我一些奇怪的值,并不是100%清楚你到底想做什么。你提到了一个精灵,它是二维的,但是你的描述是三维的。如果您正在进行二维侧视图,则无法判断油箱是否旋转了45度。如果您正在执行二维自顶向下视图,那么您不应该真正关心树的底部在哪里


无论如何,有两条建议。如果你很难追踪旋转的像素,那么请阅读这篇文章:来自creators.xna.com网站。然而,我建议跟踪向量。使用两个矢量表示轨迹位置,然后使用Vector2.Transform随坦克旋转它们。然后,您可以使用矢量来检查轨迹是否击中了什么东西,它们处于什么角度,等等。

不完全清楚您正试图做什么。你提到了一个精灵,它是二维的,但是你的描述是三维的。如果您正在进行二维侧视图,则无法判断油箱是否旋转了45度。如果您正在执行二维自顶向下视图,那么您不应该真正关心树的底部在哪里


无论如何,有两条建议。如果你很难追踪旋转的像素,那么请阅读这篇文章:来自creators.xna.com网站。然而,我建议跟踪向量。使用两个矢量表示轨迹位置,然后使用Vector2.Transform随坦克旋转它们。然后,您可以使用矢量来检查轨迹是否击中了什么东西,它们处于什么角度,等等。

您需要为精灵定义一个更清晰的方向。我会用一个前向和上向向量来表示坦克。现在,根据地形的不同,你可以同时旋转它们和坦克行驶的角度。假设这些向量位于精灵的中心。你的精灵是旋转的,就像你的前向向量和前向向量一样。现在只需将你的半高乘以上方向向量,你应该有你的局部底部中心,加上你的坦克位置,你就有了你的世界底部轨迹位置

重要提示:不要混淆点,点可以用矢量表示,也不要混淆实矢量,实矢量没有位置,只显示方向。对于方向,规范化向量很重要


很抱歉回答不清楚,但你的问题也有点模糊。

你需要为你的精灵定义一个更清晰的方向。我会用一个前向和上向向量来表示坦克。现在,根据地形的不同,你可以同时旋转它们和坦克行驶的角度。假设这些向量位于精灵的中心。你的精灵是旋转的,就像你的前向向量和前向向量一样。现在只需将你的半高乘以上方向向量,你应该有你的局部底部中心,加上你的坦克位置,你就有了你的世界底部轨迹位置

重要提示:不要混淆点,点可以用矢量表示,也不要混淆实矢量,实矢量没有位置,只显示方向。对于方向,规范化向量很重要

对不起,你的回答含糊不清,但你的问题也有点含糊不清