我正在爲Windows Phone 7.1開發基於XNA的2D遊戲。我的要求是基於輕彈的數量和角度輕彈一個物體,它將以垂直的彈射運動進行動畫。對於例如你面前有一個湖,你想扔石頭。相機是人類的眼睛,同樣的動作也必須被複制。如何在XNA 2D遊戲中創建垂直拋物線路徑?
有3個級別的距離被覆蓋。 Y軸覆蓋的距離大於X軸覆蓋的距離。
我可以看到很多關於水平(X軸)拋射體運動的等式,但沒有一個顯示Y軸上的拋射體運動。
任何想法如何在X和Y座標方面實現這種拋射體運動?
我正在爲Windows Phone 7.1開發基於XNA的2D遊戲。我的要求是基於輕彈的數量和角度輕彈一個物體,它將以垂直的彈射運動進行動畫。對於例如你面前有一個湖,你想扔石頭。相機是人類的眼睛,同樣的動作也必須被複制。如何在XNA 2D遊戲中創建垂直拋物線路徑?
有3個級別的距離被覆蓋。 Y軸覆蓋的距離大於X軸覆蓋的距離。
我可以看到很多關於水平(X軸)拋射體運動的等式,但沒有一個顯示Y軸上的拋射體運動。
任何想法如何在X和Y座標方面實現這種拋射體運動?
如果你使用Vector2
而不是角度,你可以實現一個非常基本的物理引擎,它將簡單而準確。
要彈起的對象將有Vector2 Velocity
和Vector2 Position
。
然後,你可以將鼠標之間作爲Vector2
添加的距離到Velocity
,並添加Velocity
到Position
每一幀,然後添加重力。
下面是一個簡單的實現:
public class FlickObject
{
public Vector2 Velocity;
public Vector2 Position;
public FlickObject() {}
public void Update(GameTime t)
{
Position += Velocity;
}
}
並在遊戲類(當用戶輕彈的對象):
flickObject.Velocity += FlickDistance;
哪裏FlickDistance
是鼠標之間的距離(或不過你計算它)和對象。
要完成它,加上重力:
flickObject.Velocity += new Vector2(0, GRAVITY);
凡GRAVITY
設置爲某個正值。
將嘗試這種方法,看看它是否有效。 – bismita
如果您在這裏沒有得到答案,請嘗試http://gamedev.stackexchange.com/ –
您尚未接受任何問題的答案。您應該點擊帖子左側的勾號將答案標記爲正確。 – annonymously