我正在制作一个小行星克隆,激光需要射出船的前方,但是当我尝试使用旋转矩阵旋转矢量时,它变得混乱,飞到屏幕上,我需要激光拍摄从船的前方起,并使原点与船保持整整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))));
包含一些图片以更好地解释我的问题
答案 0 :(得分:0)
您使用的是Vector2.Transform()错误。 第一个参数是您想要使用Matrix转换的“参考”矢量。
如果您希望函数返回激光起始位置的位置,则需要将Vector2(shipWidth / 2f,0)作为参数。
所以:
Vector2 laserStart = vPlayerPosition + Vector2.Transform(new Vector2(shipWidth / 2f, 0), Matrix.CreateRotationZ(angle));
然后你可以从这个位置开始绘制激光。