我有一个船的纹理,正好在船的端口下面是一个导弹的纹理。当我旋转船舶时,我需要导弹停留在相对于船舶的相同位置(即,在港口翼下)。我读过一些文章以及与此(抱歉,这是一个有点乱)想出了:围绕一个点旋转
private void RotateWeapons()
{
float x, y;
/*
x = leftMissile.X + (radius * (float)Math.Cos(Rotation));
y = leftMissile.Y + (radius * (float)Math.Sin(Rotation));
*/
leftMissile = Vector2.Transform(leftMissile - center, Quaternion.CreateFromAxisAngle(Vector3.Backward, Rotation)) + center;
//leftMissile.X = x;
//leftMissile.Y = y;
}
凡leftMissile
是Vector2
描述导弹的中间,center
是船的中心为Vector2
。它几乎可以工作,精灵围绕中心旋转。问题是,它并没有停留在港口翼上的同一点上。
这是正常的:
这是90度,这进一步的断翼:
并旋转180度时,它甚至不是在船上了:
我想尝试从旋转计算中删除'center',看看它是如何影响结果的。 – ChrisF 2012-03-04 22:11:29
我试图从开始和结束时独立地取消中心。它也做了同样的事情...... – Jack 2012-03-05 00:08:57
嗯 - 纹理是如何定义的以及每个纹理是(0,0)? – ChrisF 2012-03-05 00:14:00