【问题标题】:c# XNA 2d vector points relative to originc# XNA 2d 向量点相对于原点
【发布时间】:2012-01-19 17:16:45
【问题描述】:

我有一个关于在 c# XNA 中操作向量的问题。我目前有一个 2d 纹理,其原点设置为精灵的中心,以及两个相对于该原点的独立向量,如下所示:

ship1.Engine1.X = (float)Math.Cos(ship1.Angle) * 50 + ship1.Position.X;
ship1.Engine1.Y = (float)Math.Sin(ship1.Angle) * 50 + ship1.Position.Y;
ship1.Engine2.X = (float)Math.Cos(ship1.Angle) * -50 + ship1.Position.X;
ship1.Engine2.Y = (float)Math.Sin(ship1.Angle) * -50 + ship1.Position.Y;

这两个引擎矢量都具有火箭的粒子效果,因此需要定位在精灵的排气口上方。它们沿着船纹理的相对 X 轴排列,但我无法计算出在相对 y 轴上向下移动它们的数学原理。我该怎么做呢?提前致谢。

我的意思是:http://i.stack.imgur.com/S5bkS.png

【问题讨论】:

  • 请显示您操纵粒子效果方向的代码(您现在拥有的)。你只是显示上面的位置。 Engine1Engine2 中的方向是如何定义的?
  • 请澄清:您已正确定位发射器,但您希望粒子在ship1.Angle-180中移动?
  • @annonymously:关闭,但 Math.Cos 和 Math.Sin 采用弧度,180 度仍将其放在同一轴上,只是相对的两侧。我相信他需要用 ship1.Angle + MathHelper.PiOver2 或 ship1.Angle - MathHelper.PiOver2 替换 ship1.Angle。
  • 这是操纵。粒子效果精确地映射到 engine1 和 engine2(两个向量)。角度是弧度,这不是问题。这有效,但我需要添加它。我添加了一张图片来说明我的意思。
  • ...我刚刚意识到你们都在说什么。将角度乘以额外的弧度正是我需要做的,并且尝试它效果很好。感谢您的帮助。

标签: c# vector xna rotation 2d


【解决方案1】:

您给点的旋转与船相同。

尝试将ship1.Angle 替换为ship1.Angle + MathHelper.PiOver2ship1.Angle - MathHelper.PiOver2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    相关资源
    最近更新 更多