C# XNA中的变换矩阵
好吧,我有点被难住了。我正在做一个2D游戏,游戏中有行星围绕其他天体运行,并且也沿着它们的轴旋转。我决定使用矩阵,因为我讨厌用其他方法制作的东西有多笨重。现在的问题是,我希望能够专注于表面的某个部分,并能够跟踪它。以下是迄今为止的代码: Planet.UpdateMatrix(): 我希望能够设置一个世界变换,让它画得漂亮,居中,旋转等等 图片: 谁能帮我一下吗?有可能吗 更新:我现在有一个特定的行星跟踪工作,但系统中的其他行星没有相应的变化 例如,假设我从太阳跟踪下一颗行星,视图跟踪表面,但太阳保持静止(从技术上讲,应该围绕行星旋转,以模拟行星仍然沿着其自身的轴和绕恒星旋转) 同样,如果我尝试应用旋转,比如以特定角度跟踪行星的表面,所有其他行星都会沿着自己的轴旋转,而不是围绕我跟踪的行星旋转 新代码:C# XNA中的变换矩阵,c#,xna,transform,matrix-multiplication,C#,Xna,Transform,Matrix Multiplication,好吧,我有点被难住了。我正在做一个2D游戏,游戏中有行星围绕其他天体运行,并且也沿着它们的轴旋转。我决定使用矩阵,因为我讨厌用其他方法制作的东西有多笨重。现在的问题是,我希望能够专注于表面的某个部分,并能够跟踪它。以下是迄今为止的代码: Planet.UpdateMatrix(): 我希望能够设置一个世界变换,让它画得漂亮,居中,旋转等等 图片: 谁能帮我一下吗?有可能吗 更新:我现在有一个特定的行星跟踪工作,但系统中的其他行星没有相应的变化 例如,假设我从太阳跟踪下一颗行星,视图跟踪表面,但太
view.World = Matrix.Invert(TargetPlanet.TotalTransform *
Matrix.CreateRotationY(MathHelper.ToRadians((float)SurfaceOffset)));
所以你想设置行星的
总变换的倒数
?嗯。它很好地跟踪了行星,但假设我跟踪行星2,行星的起源行星(即太阳)不移动(如果我们跟踪表面,它应该移动)…然后你可以尝试效果。世界=总变换*视图。世界,现在行星在移动,但视图没有跟踪它。脸掌:P
/// <summary>
/// Draws this planet
/// </summary>
/// <param name="device">The graphics device to draw with</param>
/// <param name="view">The ViewParameters to use</param>
public void Draw(GraphicsDevice device, ViewParamaters view)
{
effect.View = view.View;
effect.Projection = view.Projection;
effect.World = view.World * TotalTransform; //TotalTransform is rotation * translation
draw stuff...
//Handle surface tracking
if (TrackSurface)
{
view.World = ???;
}
view.World = Matrix.Invert(TargetPlanet.TotalTransform *
Matrix.CreateRotationY(MathHelper.ToRadians((float)SurfaceOffset)));