2017-04-02 69 views
1

我需要這個功能才能繼續使用我的簡單滾動射擊遊戲。VB.NET從一個點到另一個點獲取方向

Public Function GetDirection(origin As Point, target As Point) As Single 
    'do some trigonometry here 
    Return Direction 
End Function 

通常我會插入這些參數:GetDirection(player_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 :) Screenshot

+0

你是說你想要計算一個角度?如果是這樣的話,那只是帶有一點代數的畢達哥拉斯。這是你在小學數學課上學到的東西。我建議你做出努力,然後發佈你做了什麼,如果它不工作。 – jmcilhinney

回答

2

您應該使用Math.Atan2方法。我不是一個VB開發人員,但我認爲你可以將下面的僞代碼到VB:

direction = Math.Atan2(target.Y - origin.Y, target.X - origin.X) 

但尋找到你的代碼,並注意到,你只是在下一行使用Math.SinMath.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 
+0

工程很好,非常感謝! – Adam

相關問題