現在、私はpygameを使っています。複数のスプライトを作成し、少なくとも2つの衝突をチェックしたいと思います。私は2つのwhileループを持つという考えを思いついたが、それは本当に複雑になった。私はそれを試すことができる他の方法はありますか?pygameのスプライトで複数の衝突をチェックする
-1
A
答えて
0
pygame.sprite.spritecollide
を使用して、プレーヤーと衝突するスプライトのリストを取得し、衝突したスプライトで何かを行うためにこのリストをループします。
また、2つのスプライトグループ間の衝突を検出するために使用できるgroupcollide
もあります。グループ1のスプライトをキーとし、グループ2の衝突したスプライトを値として持つ辞書を返します。
import sys
import pygame as pg
from pygame.math import Vector2
class Player(pg.sprite.Sprite):
def __init__(self, pos, *groups):
super().__init__(*groups)
self.image = pg.Surface((120, 60))
self.image.fill(pg.Color('dodgerblue'))
self.rect = self.image.get_rect(center=pos)
class Enemy(pg.sprite.Sprite):
def __init__(self, pos, *groups):
super().__init__(*groups)
self.image = pg.Surface((120, 60))
self.image.fill(pg.Color('sienna1'))
self.rect = self.image.get_rect(center=pos)
def main():
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
all_sprites = pg.sprite.Group()
enemy_group = pg.sprite.Group(Enemy((200, 250)), Enemy((350, 250)))
all_sprites.add(enemy_group)
player = Player((100, 300), all_sprites)
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
elif event.type == pg.MOUSEMOTION:
player.rect.center = event.pos
all_sprites.update()
# Check which enemies collided with the player.
# spritecollide returns a list of the collided sprites.
collided_enemies = pg.sprite.spritecollide(player, enemy_group, False)
screen.fill((30, 30, 30))
all_sprites.draw(screen)
for enemy in collided_enemies:
# Draw rects around the collided enemies.
pg.draw.rect(screen, (0, 190, 120), enemy.rect, 4)
pg.display.flip()
clock.tick(30)
if __name__ == '__main__':
pg.init()
main()
pg.quit()
sys.exit()
+0
返信いただきありがとうございます!それはたくさんの助けになりました!私はパイゲームでは新しく、時にはコーディングに問題があります。再度、感謝します。 –
関連する問題
- 1. Pygameとスプライトの衝突
- 2. スプライトの衝突
- 3. 衝突時にプレイヤーのスプライトを更新する方法 - Pygame
- 4. Pygameの衝突ゲーム
- 5. Pygameのスプライトで衝突検出が機能しない
- 6. pygame/pythonはスプライト間の衝突を検出しません
- 7. PyGameのスプライト衝突テスト(試してみました:rectとgroup)
- 8. Pygame Inquiry - スプライトの衝突が機能していませんか?
- 9. 作業スプライト衝突
- 10. pygameでのカメラの衝突と衝突の問題
- 11. pygameキャノンボールの衝突検出
- 12. 壁のpygame衝突検出
- 13. PyGame Tileレンダリングマップとの衝突?
- 14. スプライトとシェイプレンダラーサークルの衝突
- 15. スプライトを使わずにpygameの衝突を検出できません
- 16. Actionscript 3.0でのスプライトの衝突検出
- 17. 衝突検出シンプルゲーム - Pygame
- 18. Pygame衝突検出バグ
- 19. cocos2dスプライト衝突検出バウンディングボックス
- 20. フェイザーP2コリジョン衝突スプライト
- 21. cocos2dチェック衝突
- 22. 同じタイプの複数のスプライトの衝突検出のチェックはどうすれば処理できますか?
- 23. Pygame:2つの画像の衝突
- 24. Pygame - 横並びの角の衝突
- 25. AndEngine:2つのスプライトの衝突
- 26. SpriteKit bodyWith衝突時のスプライト間のギャップ
- 27. 2つのスプライトの衝突 - Python 3.5.2
- 28. 移動スプライトによる2dスプライトの衝突処理のトップダウン?
- 29. Pygameの衝突精度問題
- 30. 衝突検出の問題 - PyGame
ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [on topic](http://stackoverflow.com/help/on-topic)および[How to Ask](http://stackoverflow.com/help/how-to-ask)をここで適用してください。 StackOverflowは、デザイン、コーディング、リサーチまたはチュートリアルサービスではありません。 – Prune
コーディングの問題を投稿する際の詳細については、[最小限の、完全で検証可能な例](http://stackoverflow.com/help/mcve)を参照してください。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 投稿したコードをテキストファイルに貼り付け、説明した問題を再現できるはずです。 – Prune
あなたの試合は何ですか?あなたのオブジェクトの位置を処理し、それらを比較するだけです。同じポイントの場合は、衝突が表示されます。色を使用して、Unityのように衝突をチェックすることもできます。 – WaLinke