2013-04-23 84 views
0

我正在努力做一個物理引擎的小遊戲,我特別想做出一個好的和可重用的架構。如何處理英雄在物理引擎中的移動?

我試圖以最好的方式處理英雄實體的控制。 我試過的第一個概念只是在鍵被按下時增加速度,並在釋放按鈕時移除速度的相反值。 但我面臨一個主要問題,如果玩家撞牆,他的速度將被設置爲零。然後,如果玩家釋放了該鍵,則會因爲負速度已被設定而使玩家回到原位。

我嘗試了一些其他的概念(使用強制,...),但我找不到這個簡單問題的可行解決方案。 :C

任何人都有一個想法? (我正在用C#編碼,XNA和物理引擎Farseer)

+1

發佈任何代碼,你已經嘗試與您的問題有關。 – 2013-04-23 17:56:29

+0

什麼樣的遊戲?一個平臺嗎? – 2013-04-24 00:13:55

回答

0

因此,當你釋放密鑰時,無論他是否碰撞牆壁,Hero都會開始後退。那麼,基本上你可以檢查玩家之前是否有速度,或者它是否碰撞過牆壁。這是一個有點的,應該工作:

//If we have the key pressed, add velocity 
if (KeyPressed) 
{ 
    Hero.speed += constant; 
} 
else if (!KeyPressed) 
{ 
    //If it's stopped, don't move it! 
    if (Hero.speed == 0) 
    { 
     //In this case, you do nothing 
    } 
    //If it has been moving, reduce the velocity 
    else 
    { 
     Hero.speed -= constant; 
    } 
} 

//Let's check 
if (Hero collided with Wall) 
{ 
     Hero.speedX = 0; 
} 

我想你可以看到這個想法。如果您發佈代碼會更好,所以我們可以根據您使用的結構對其進行修改。 我希望這會有用。如果它不起作用,請告訴我=)