0

2Dゲームを作成しています。私はゲームに物理エンジンを実装したので、プレーヤーがジャンプすると、ゲーム内の速度と重力を考慮して、アークがパスをたどります。プレイヤーが落下しているとき、落下した距離は加速しているため、どんどん大きくなります。

新しい場所でプレイヤーがオブジェクトの反対側に配置された場合、プレイヤーがパス内の何かと衝突したかどうかをどのように知ることができますか?

ループを使用して、プレーヤーのパスに沿ったすべてのポイントをテストできます。これがそれを行う唯一の方法ですか?より洗練されたアルゴリズムやpygameソリューションはありますか?

4

2 に答える 2

1

Pygame 自体はあなたを助けることができないのではないかと心配しています。長方形が交差するかどうかを判断するのに役立つ API がいくつかありますが、ご存知のように、エンティティが十分に速く移動している場合、エンティティは 1 つの更新で地面の片側にあり、次の更新では反対側にある可能性があります。側。これは「トンネリング」と呼ばれることもあります。

これを修正する最も簡単な方法は、エンティティが地面 (または他のエンティティ) を通過するほど速く移動しないようにすることです。落下するエンティティに「終末速度」を適用するか、衝突検出の頻度を増やすことができます。

これを解決するためのより複雑なアルゴリズムがあり、一般に「連続衝突アルゴリズム」と呼ばれますが、これらはより複雑です。これらのアルゴリズムについては、オンラインで入手できる情報がたくさんあるので、必要に応じて調べてください。

于 2012-07-10T00:56:57.393 に答える
1

解決策の 1 つは、速度ベクトルの反対側に目に見えないテールを追加して、フレーム間の大きな移動距離を補正するのに十分な長さにすることです。

于 2012-07-10T00:13:28.447 に答える