得到兩分。如果這是你要計算目標點嚴格的算法問題(即沒有遊戲對象走動,但抽象的數據),您可以這樣做: 考慮笛卡爾座標系下的二維平面(即標準x/y系統)。設O爲點(0,0)
處的對象。從你的「目的地」(2.5,2.5),我可以假設你想以後的事:
![enter image description here](https://i.stack.imgur.com/BiAi6.png)
所以45°
是角度和4
(amount to move
)是你想要的線段的長度向前走。
![formula2](https://i.stack.imgur.com/9hi20.gif)
但實際上,這種形象是錯誤的,這是我們」:從(0,0)出發,終點可以用正弦和餘弦使用公式的一個點的極座標表徵計算我們將在下面的計算中看到。如果運動沿着傾斜角度爲45°的線,那麼你會在其他地方出現一點點。
無論如何,在這個例子中,alpha將是45°
,它是以弧度表示的pi/4(你可以通過除以180並乘以pi得到該值),並且半徑r將是4
(我們想要移動的量) ,因此我們計算了目標點爲:
![formula3](https://i.stack.imgur.com/l4Y0T.gif)
如果點的任何位置在房間裏(不是(0,0)
但(x_0, y_0)
),那麼你仍然可以將其添加爲偏移:
![formula4](https://i.stack.imgur.com/5lzFk.gif)
因此,在代碼中你會寫:
public static Vector2 ComputeDestination(Vector2 origin, float amountToMove, float angle)
{
//convert degrees to radians
var rad = angle * Mathf.Deg2Rad;
//calculate end point
var end_point = origin + amountToMove * new Vector2(Mathf.Cos(rad), Mathf.Sin(rad));
return end_point;
}
我投票關閉這一問題作爲題外話,因爲這是一個數學問題;問math.stackexchange.com – Fattie
爲什麼2.5,2.5是否有任何特定的原因? – TheBook
移動金額?會是'移動的距離'? – TheBook