コードをダウンロードするには、次のリンクをクリックしてください。
背景:
それで、私はパイゲームのチュートリアルを初めて使用したので、Eli Benderskyの有名なチュートリアルを見つけました。私はパート 1 を進めていて、「Social Cats」にすることで自分のセンスを追加しようとしていました。猫たちは歩き回り、お互いに触れ合うとお互いに草を食み、別々の道を進みます。言い換えれば、エリが持っていたものと同じですが、衝突検出と新しいスプライトがありました. これは良い習慣になると思います。過去数日間、衝突検出と、さまざまな人がそれを行う方法を調査してきましたが、私のシナリオまたは同様のもので機能するものをまだ見ていません. 自分がコミュニティの中でいかに小さいかを理解し始めています。
目的:
最終的には、猫が別の猫にぶつかったときに、衝突した猫が現在の方向よりも 45 度小さいか大きいランダムな方向に消えるようにしようとしています。
問題:
私は vec2d をインポートしており、Cat クラスとメインを持っています。後で何が起こっているかを監視する GameManager クラスを作成するので、メインで衝突検出を行いたいと思います。OOPによると、とにかく猫はお互いのことを知らないはずです. 衝突検出を機能させるのに問題がありました。私はいくつかの異なる方法を試しました。どちらの方法でも、互いに接触しても何も起こりません。自分がやりたいことは、自分が認識しているよりもはるかに複雑だという印象を受けています。どうやってこれを台無しにしていますか?この一面で十分な時間を無駄にしたような気がします。もちろん、それは学習プロセスです。考え?
方法 1:
mainWindow.fill(_white_)
for cat in cats:
cat.update(timePassed)
cat.blitme()
catsCollided = pg.sprite.spritecollide(cat, catGroup, True)
print pg.sprite.spritecollide(cat, catGroup, False)
for cat in catsCollided:
cat.currentDirection.angle = randint(int(cat.currentDirection.angle - 45), int(cat.currentDirection.angle + 45))
方法 2:
mainWindow.fill(_white_)
for cat in cats:
cat.update(timePassed)
cat.blitme()
print pg.sprite.spritecollide(cat, catGroup, False)
tempCatList = list(cats)
for catA in cats:
tempCatList.remove(catA)
for catB in cats:
if catA.rect.colliderect(catB.rect):
cats[cats.index(catA)].currentDirection.angle = randint(int(cat.currentDirection.angle - 45), int(cat.currentDirection.angle + 45))