好的,所以我一直在關注浮動指南,並且使精靈以低於每幀1像素的速度移動 。挺容易。現在,我得到如下分配:如何使精靈彈跳,重力?
添加重力影響,新型坦克的位置, 的計算,使其降下來,而不是自動每次反彈對頂部 的。
我該如何做這個重力的東西?我只學會了如何添加到x和y ... 簡單地將每個幀添加到y值並不會很好,當然,並不是真正的 重力。我真的不明白我在這裏會做什麼。
要了解簡短教程,請點擊此鏈接。這很容易。 http://www.devmaster.net/articles/intro-to-c++-with-game-dev/part6.php
這是我的糟糕的代碼,使坦克在四個方向上移動,並使其在下降時不可見 。我添加了漂浮物,因爲這個教程。
Sprite theSprite(new Surface("assets/ctankbase.tga"), 16);
float SpriteX = 50;
float SpriteY = 0; //the sprite starts at the top of the screen (2D coords system)
float screenBottom = 400; //I'm assuming your screen is 200 pixels high, change to your size
float speedY = 0.01; //the initial speed of the sprite
float accelY = 0.01; //the change in speed with each tick
bool Bottom = false;
void Game::Tick(float a_DT)
{
m_Screen->Clear(0);
theSprite.Draw(SpriteX, SpriteY, m_Screen); // Draws sprite
if(SpriteY >= screenBottom) //when we hit bottom we change the direction of speed and slow it
{
speedY = -speedY/2;
Bottom = true;
}
if(Bottom == false)
{
SpriteY += speedY;
}
speedY += accelY;
}
那麼,如何讓這個坦克在'重力'的屏幕上彈跳,在較少的代碼中呢? 謝謝。對不起,如果這是一個愚蠢的問題,但我沒有看到它。
感謝您的回答。您能否向我展示這些與我編寫的代碼有關的內容,還是那麼多的工作?我真的不知道如何實現這一點。請注意,我對這個編碼工作完全陌生。 – Turbosheep
@Turbosheep有一些事情我沒有真正在你的代碼中得到。就像你爲什麼要這樣做:'在'tick()'開始時'SpriteY + = 0.01;'然後再次改變'SpriteY'的值,如果它向上或向下移動的話......你能解釋一下那個部分嗎?關於你的約束(運動的x/y極限是什麼)的解釋也是很好的。 – MeLight
當然。 SpriteY + = 0.01;可以忽略。我現在把它從我的帖子中編輯出來。我錯誤地離開了這個實驗,我很抱歉。約束在那裏,因爲我需要一些條件來將精靈向右,向下,向左和向上移動。我需要在四個條件下移動精靈進行任務,所以......但是我不知道如何實際反彈精靈或任何東西。 – Turbosheep