0

この質問は奇妙に聞こえるかもしれません。なぜなら、これがどのように可能になるのか本当に理解できないからです。Windows、Xbox、WP7、WP8で完全に正常に動作する、私の2Dゲーム用の衝突コードがいくつかあります。しかし、奇妙な理由で、ゲームを Windows 8 Metro アプリとして実行すると、まったく同じコードが機能しません。さらに奇妙なのは、Surface で同じプロジェクトを実行するとコードが機能するのに、PC で実行すると弾丸が敵をまっすぐに貫通することです。コードはどこで使用しても同じであり、実際に機能することを知っているため、コードを投稿しても役に立たないと思います。これがどのように可能であるかを誰かが知っている場合は、私に知らせてください。コードを投稿したい場合は、お知らせください。

コードが何をしているのかを少し説明します。

  • プレイヤーのすべての弾丸をループします
    • すべての敵をループします
      • 長方形の衝突が発生した場合
        • ピクセルごとの衝突が発生した場合
          • 敵を倒し、弾丸を取り除くなど。

このゲームは、Metro アプリとしてテストするために使用したのと同じ PC で、XNA ゲームとして正常に動作します。

4

2 に答える 2

2

これは、コンピューターの速度の問題である可能性があります。あなたのゲームループは静的タイマーで動作しますか?それとも更新/描画をできるだけ速くスローしますか? ある更新では敵の前にあり、次の更新では後ろにあるため、弾丸が衝突していない可能性があります。デバッグとして敵または弾丸を「広げる」ことを試みてください - それはそれを修正するかもしれません. この場合は、更新内で弾丸の更新を行って、その間のすべての場所に確実にヒットするようにする必要があります。敵をテレポートしません。

于 2013-09-25T20:14:28.030 に答える