1

さて、私は pygame で 2D スクローラー ゲームを作成していますが、衝突をいつ考慮するかを制御できるようにしたいと考えています。たとえば、プレイヤーが衝突して死んだ後、すぐに画面の中央にリスポーンします。問題は、近くに別の衝突オブジェクトがあり、プレイヤーを即座に殺すことが多いことです。私が望むのは、プレイヤーが衝突に耐えられる短い期間であり、最初に安全な場所に移動してから、通常どおりプレイを続けることができます。リスポーンをダミーのスプライト グループに配置し、時間の経過とともにそれを削除して、衝突のある別のグループに追加することを考えていました。よくわかりません。

4

1 に答える 1

0

プレイヤーが死ぬとき、無敵にするフレーム数を変数に設定します。衝突検出を行うとき、プレイヤーに無敵のフレームが残っているかどうかを確認し、フレームが残っていない場合にのみ衝突を処理できます。

def kill_player(player):
    # handle moving the player after death, anything else you need to do
    # set player invulnerability to 30 frames
    player_invulnerable_frames = 30

if environment_rect.collides(player_rect) and player_invulnerable_frames = 0:
    # perform collision response stuff here

ゲーム ループまたは更新機能で、無敵フレームの数が現在 0 より大きい場合は、その数を減らすことができます。

while(running):
    # your game loop stuff
    if player_invulnerable_frames > 0:
        player_invulnerable_frames -= 1 
于 2013-05-22T17:51:18.740 に答える