旋转固定在精灵上的Vector2

时间:2016-03-05 10:41:56

标签: c# vector xna

我正在制作一个小行星克隆,激光需要射出船的前方,但是当我尝试使用旋转矩阵旋转矢量时,它变得混乱,飞到屏幕上,我需要激光拍摄从船的前方起,并使原点与船保持整整360度。目前,当船只面向东方时,它只能以90度角直射。

这就是我现在所拥有的:

Private Sub CommandButton2_Click()
        Dim LastRow As Long
        With ThisWorkbook.Sheets("Output")
            LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row
            With .Range("H" & LastRow)
                .Value2 = TextBox1.Value
            End With
        End With
End Sub

角度

lLasers.Add(new Laser(Vector2.Transform(new Vector2((vPlayerPosition.X + 35), (vPlayerPosition.Y)), Matrix.CreateRotationZ(angle))));

包含一些图片以更好地解释我的问题

Origin in Bottom Left Corner

Shooting Straight at 90 degrees

1 个答案:

答案 0 :(得分:0)

您使用的是Vector2.Transform()错误。 第一个参数是您想要使用Matrix转换的“参考”矢量。

如果您希望函数返回激光起始位置的位置,则需要将Vector2(shipWidth / 2f,0)作为参数。

所以:

Vector2 laserStart = vPlayerPosition + Vector2.Transform(new Vector2(shipWidth / 2f, 0), Matrix.CreateRotationZ(angle));

然后你可以从这个位置开始绘制激光。