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