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