2013-10-20 57 views
0

要開始我想說我正在製作2D側面滾動視頻遊戲。遊戲使用C#編碼,框架使用XNA。我想知道一個簡單的方法來製作一個基本的物理引擎可能是什麼,以及它放在哪裏。我在XNA方面的經驗並不廣泛,但是我已經足夠知道如何在沒有物理的情況下製作遊戲,所以自然現在我希望添加物理(一種跳躍功能,然後拉下玩家)。我的目標是結束與Terraria或超級馬里奧相似的物理學。任何想法從哪裏開始?我知道我將至少需要一個向量來拉動玩家,另一個向上推動玩家,但那就是我所知道的......如何爲側面滾動遊戲製作2D物理模擬器

+0

從codeplex或Github開始,找到現有的引擎,有很多。當然,直到你的目標是學習如何構建物理引擎。 – galenus

+0

我的目標是建立一些重量輕,有些簡單的東西。我不想花費幾天的時間來構建這個。儘管我知道我可以很輕鬆地做到這一點。我看着谷歌,我真的可以找到的是物理引擎,它們很龐大,整合起來相當複雜。 –

+0

有大量的遊戲引擎和物理教程在線。他們是開始這種努力的好地方。然後,當遇到一個* actual *問題時(對於這個問題還沒有問題),一個SO的帖子會更合適。 – user2864740

回答

0

除非你需要玩家推動物理和物理,你的意思是跳躍,然後實現跳躍,就像傳統的雙面打印器一樣簡單。

你可能想要做這樣的事情:

float currentYspeed; 
float GRAVITY = 5; 
bool playerFlying; 

// In Update(): 
if (isUpArrowKeyDown() && !playerFlying) { playerFlying = true currentYspeed = 50; } 
playerY += currentYspeed; 
currentYspeed -= GRAVITY; 
if (playerCollidesWithFloor()) 
{ 
    currentYspeed = 0; // We came back to ground. 
    playerFlying = false; 
} 
else if (playerCollidesWithSomethingElse()) 
{ 
    currentYSpeed = 0; // We hit obstacle in-air. 
} 

當然,你可能要重構和美化這個代碼,使位置和速度的變化依賴於經過秒等

如果你不知道如何實現碰撞函數,可以考慮閱讀關鍵字「2D碰撞檢測」或「sidescroller /平臺遊戲教程」。