わかりましたので、フロートに関するチュートリアルに従って、フレームあたり 1 ピクセル未満の速度でスプライトを移動させました。とても簡単。今、私は次の割り当てを取得します。
新しい戦車の位置の計算に重力の影響を追加して、毎回上部に跳ね返るのではなく、自動的に下降するようにします。
この重力をどうやって作るのですか?x と y に加算する方法だけを学びました... フレームごとに y の値を単純に加算しても、もちろんうまく機能しません。実際には重力ではありません。ここで何をすることが期待されているのか、よくわかりません。
短いチュートリアルのアイデアを得るには、ここにリンクがあります。それは簡単です。 http://www.devmaster.net/articles/intro-to-c++-with-game-dev/part6.php
これは、タンクを 4 方向に動かし、下降時に見えないようにするための私の悪いコードです。チュートリアルのためにフロートを追加しました。
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;
}
では、遅延の少ないコードで、この戦車を「重力」で画面上で跳ね返らせるにはどうすればよいでしょうか? ありがとう。これがばかげた質問であれば申し訳ありませんが、私はそれを見ていません。