Ste*_*ger 2 c# graphics xna 2d
我正在制作一个XNA游戏并遇到一个小问题,想出一些矢量数学.
我有一个类表示具有X和Y整数坐标的2D对象和一个旋转浮点数.我需要的是为Position获取一个Vector2属性,并将X和Y设置为使用Rotation float转换的Vector2.这样我就可以做一些事情;
Position += new Vector2((thumbstick.X * scrollSpeed), -(thumbstick.Y * scrollSpeed));
Run Code Online (Sandbox Code Playgroud)
并且物体将沿着它自己的向上方向移动,而不是视图的向上方向.
到目前为止这就是我所拥有的......我认为这个设置是正确的,但是对于+ =更改它需要得到一个并且答案就是现在没有找到我...>.>
public Vector2 Position
{
get
{
// What goes here? :S
}
set
{
X = value.X * (int)Math.Cos(this.Rotation);
Y = value.Y * (int)Math.Cos(this.Rotation);
}
}
Run Code Online (Sandbox Code Playgroud)
不,两者都不正确.
2D矢量转换如下:
x' = x*cos(angle) - y*sin(angle)
y' = x*sin(angle) + y*cos(angle)
Run Code Online (Sandbox Code Playgroud)
在以弧度为单位测量角度的情况下,零角度沿正x轴,并且当绕z轴绕平面旋转时,沿逆时针方向增加.旋转中心位于被变换的矢量的末尾,因此想象一下原点位于(0,0)的矢量,以(x,y)旋转一个角度结束,直到它成为原点位于(0,0的矢量) )并以(x',y')结束.