0

私は DirectX 9.0 で少し遊んでいて、オブジェクトが画面の端 (上、下、右、左) に当たったときに跳ね返るようにしたいと考えています。スプライトは 128x128 ピクセルの画像です。なんとか前後に跳ね返るようにしましたが、これは画像が画面の半分外に出るか、早すぎる前に発生しません。これは、オブジェクト自体が画像の中央にあるためです。画像部分自体が画面の端に衝突する前にプログラムがスプライトを跳ね返さないように、背景部分を「削除」する方法はありますか? イメージを手動で変更する必要がありますか? それか何かを切り取るように=

ここに私が取り組んでいるコードの一部があります:

if(this->Textures[i].posision.x >= this->_screenWidth)
{
    this->Textures[i].right = false;
}
else if(this->Textures[i].posision.x <= 0)
{
    this->Textures[i].right = true;
}

if(!this->Textures[i].right)
    this->Textures[i].posision.x -= 0.3f;
else
    this->Textures[i].posision.x += 0.3f;

助けてくれてありがとう!

4

1 に答える 1

0

左向きのベクトルで移動している場合、衝突は次のように認定されます。

if(this->Textures[i].posision.x - 128/2 <= 0)
{
    this->Textures[i].right = true;
}

position.xとposition.yが画像の中心を参照している場合は、画像の境界を取得するために、画像サイズの半分を加算/減算するだけです。スプライトが画像を埋め尽くしていない場合は、おそらく画像の一部を切り抜く必要があります。

于 2012-07-31T17:27:06.607 に答える