0

こんにちは、私は現在、サイド オン プラットフォーマーに取り組んでいます。あるプラットフォームから別のプラットフォームにジャンプすると、問題なく動作するという奇妙な問題が発生します。ただし、ジャンプして別のスプライトの底にぶつかると、キャラクターのスプライトが画面から飛び出して上向きになります。これは、プレイヤーとプラットフォーム間の衝突が正しくプログラムされていないことが原因だと思います。方法がわからないためです。現時点で行ったことは次のとおりです。

    collide = pygame.sprite.spritecollide(player, platform_list, False)
    if collide:
        player.rect.y-=1

プレイヤーとプラットフォーム間の衝突検出のより良い方法を誰かが提案できる場合は、それを教えてください、ありがとう。そしてどういうわけか、このバグにより、プレイヤーは画面の 4 つのコーナー (322 行目と 212 行目) に設定した画面境界を越えることができますが、これらの障壁は通常

私の完全なゲームコードは次のとおりです。

http://pastebin.com/cae4u5NR

4

1 に答える 1

1

グラフィカルなものをプログラミングする場合、y 座標が逆になるため、y 座標の値はプラットフォームの下では高くなり、プラットフォームの上では低くなります。

あなたの現在のコードは、プレイヤーをプラットフォームの内側に移動させ、衝突を再びアクティブにし、プラットフォームの内側にさらに押し上げます。

代わりに次のように言う必要があります。

    collide = pygame.sprite.spritecollide(player, platform_list, False)
    if collide:
        player.rect.y += 1

ここで注目すべきは、「-= 1」から「+= 1」への変更です。

これにより、プレーヤーのスプライトがプラットフォーム内で上に移動する代わりに下に移動します。

この衝突検出の例も嘘をついています。メソッドを自分のオブジェクト指向プログラムに一度実装しましたが、自分のプログラムを失いました。ずっと前にこのプログラムを見つけたので、誰がこのプログラムを所有しているか思い出せません。私が言うことから、それを行う公正な方法を理解するのに役立つことを願っています.

于 2013-10-27T19:20:42.130 に答える