速度方向上的点矩形(XNA)

时间:2013-11-04 22:30:23

标签: xna rotation position atan2

我已经尝试Math.Atan2(futurePos.Y - pos.Y, futurePos.X - pos.X)作为旋转,但它似乎只能在X轴上工作 然而,如果我做Math.Atan2(mouse.Y - pos.Y, mouse.X - pos.X)它可以正常工作(尽管我必须管理速度是否为负值,即使这对两个方向也不起作用)。

(futurePos = position + velocity)

我想要的结果是在粒子的位置绘制一个矩形,其长度与粒子的速度有关,其角度指向粒子的位置。

2 个答案:

答案 0 :(得分:1)

请记住,如果你的参考系统是“经典”系统,那么在XNA中Y轴是相反的,所以你必须否定你在Math.Atan2

中作为第一个参数放置的所有内容。

答案 1 :(得分:0)

仅供参考,我最终从对象到其未来位置画了一条线(正如我的问题所预期的那样)。

这是Draw方法中的代码;

Vector2 nextPos = position + velocity * 7;

drawLine(spriteBatch, Game1.pixelTexture, position, nextPos, Color.FromNonPremultiplied(255, 0, 0, 100));

这里是绘制线代码;

void drawLine(SpriteBatch spa, Texture2D tex, Vector2 src, Vector2 dst, Color col)
{
    Vector2 direction = dst - src;
    var angle = (float)Math.Atan2(direction.Y, direction.X);
    float distance;
    Vector2.Distance(ref src, ref dst, out distance);

    spa.Draw(tex, src, new Rectangle((int)src.X, (int)src.Y, (int)distance, 2), col, angle, Vector2.Zero, 1.0f, SpriteEffects.None, 0f);
}