私は以前にこのようなことを尋ねられたことがあると確信していますが、私はそれを見つけることができませんでした。とにかく、私は2つの動くオブジェクト(ハロウィーンをテーマにした)を使った簡単なゲームアニメーションを作成しています。オブジェクトが壁にぶつかると跳ね返りますが、2つのオブジェクトがぶつかったときに表示される画像も必要です。私は複数の方法を試しましたが、どれもうまくいきません。それらは効果がないか、エラーを発生させます。とにかく、これが私が試した最後のことです:
public PumpkinCheckCollisionPumpkin(GameTime gameTime)
{
if (pumpkin1.BoundingBox.Intersects(pumpkin2.BoundingBox))
{
pumpkinCollide = True;
Draw(gameTime);
}
次に、そのブール値(以前にfalseに設定したもの)を描画セクションに渡そうとしましたが、機能しませんでした。上記のメソッドは、Updateメソッド内で呼び出されます。Update(GameTime gameTime)部分でdrawメソッドを呼び出そうとしましたが、それも機能しませんでした。2つのオブジェクトが衝突したときにすでに表示されているものに加えて、別の画像を表示するにはどうすればよいですか?(また、そのパブリックメソッドは元々プライベートでしたが、パブリックにしたので、私が試した別の戦術が機能する可能性があります(機能しませんでした))。
答えは非常に単純で、Draw
関数を直接呼び出さないでください。
この場合、衝突グラフィックが次の描画呼び出しで描画される必要があるという事実を保持するクラスレベルの状態変数を設定します。これはその後発生する可能性があります。
とにかく描画するたびに消去するので、呼び出しが正しく機能したとしても、次のDraw
呼び出し(すぐに発生します)で消去されます。同じ理由で、Draw
呼び出しが発生した後にフラグの設定を解除しないでください。プレーヤーが見るよりも早くフラグが消去されます。しばらくの間、画面に表示しておく必要があります。
これを行うには、フラグが設定された時刻を保持する変数を設定し、十分な「可視」時間が経過するまで現在の時刻と照合します。これにより、「衝突の表示」フラグがクリアされ、グラフィックは描画されなくなります。
フレームワークにその呼び出しのタイミングを処理させ、設定した状態が描画されるものを駆動するようにします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加