VB.NET获取从一点到另一点的方向

VB.NET获取从一点到另一点的方向,vb.net,math,gdi+,trigonometry,Vb.net,Math,Gdi+,Trigonometry,我需要这个功能的工作,以继续与我的简单滚动射击游戏的进展 Public Function GetDirection(origin As Point, target As Point) As Single 'do some trigonometry here Return Direction End Function 通常我会插入这些参数:GetDirection(player\u point,MousePosition) 并在这种情况下使用它们: Dim direction A

我需要这个功能的工作,以继续与我的简单滚动射击游戏的进展

Public Function GetDirection(origin As Point, target As Point) As Single
    'do some trigonometry here
    Return Direction
End Function
通常我会插入这些参数:
GetDirection(player\u point,MousePosition)

并在这种情况下使用它们:

Dim direction As Single = GetDirection(player_point, MousePosition)
Dim blt_increment_x As Single = Math.Sin(direction)
Dim blt_increment_y As Single = Math.Cos(direction)
现在,这些变量可用于移动我的项目符号实体:

blt_point.X += blt_increment_x
blt_point.Y += blt_increment_y
我只需要这个
GetDirection()
函数的代码。目前我不知道从哪里开始,我将其设置为不断返回0。我正在使用VB.NET。谢谢!:)

对于那些想知道的人,这里是我的游戏的截图,非常让人想起diep.io:)

您应该使用方法。我不是VB开发人员,但我认为您可以将以下伪代码转换为VB:

direction = Math.Atan2(target.Y - origin.Y, target.X - origin.X)
但是查看您的代码并注意到您将在下一行中使用
Math.Sin
Math.Cos
,整个想法毫无意义。运动方向由X和Y坐标的差来指定。如果你想有一个恒定的速度,你的代码可以是这样的

dX = target.X - origin.X
dY = target.Y - origin.Y 
len = Math.Sqrt(dX*dX + dY*dY)
blt_increment_x = Speed * dX / len
blt_increment_y = Speed * dY / len

你是说你在计算一个角度吗?如果是这样的话,那就是毕达哥拉斯和一些代数。这是你在小学数学课上学到的东西。我建议你做点努力,如果做不到的话,把你做过的事情贴出来。