1

過去数年間、C++ と Java を少しコーディングしてきましたが、今では Python から始めました。目標はゲームを作ることです。しかし、プレイヤーが左右に動く基本的なアニメーションの部分で、左の「速度」が右の「速度」よりも速いことに気付きました。私の「速度」の値はまったく同じですが。

更新機能:

def update(self,dt,game):
    last=self.rect.copy()


    self.time+=dt


    if self.left:
       self.rect.x-=300*dt
    if self.right:
       self.rect.x+=300*dt

左の速度を 300 ではなく 250 に変更すると、同じように動作することに気付きました。たとえば、左キーと右キーの両方を押すと、プレーヤーはまったく同じ場所にとどまります。ただし、左右の速度が両方とも 300 の場合、プレーヤーはゆっくりと左に移動します。

私のゲームループ:

while 1:
        dt=clock.tick(60)
        if dt>1000/60.0:
            dt=1000/60.0

        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                return
            if event.type==pygame.KEYDOWN and event.key==pygame.K_ESCAPE:
                return
            if event.type==pygame.KEYDOWN and event.key==pygame.K_LEFT:
                self.player.left=True
                self.player.image=self.player.leftimages[1]
            if event.type==pygame.KEYDOWN and event.key==pygame.K_RIGHT:
                self.player.right=True
                self.player.image=self.player.rightimages[1]
            if event.type==pygame.KEYUP and event.key==pygame.K_LEFT:
                self.player.left=False
                self.player.image=self.player.leftimages[0]
            if event.type==pygame.KEYUP and event.key==pygame.K_RIGHT:
                self.player.right=False
                self.player.image=self.player.rightimages[0]

        self.tilemap.update(dt/1000.0,self)
        screen.fill((0,0,0)) 
        self.tilemap.draw(screen)
        pygame.display.update()

タイル マップ エディターで作成したマップをインポートできるように、Richard Jones の tmx ライブラリを使用しています。これが私の奇妙な質問に答えるのに十分な情報であることを願っています. 私は他のプログラミングの友人に尋ねましたが、彼はそれが奇妙だと感じました。

一部のコードがオフになっている可能性があります。これは、元のコードからコピーして貼り付けただけで、さらにいくつかのものが含まれているためです。しかし、私は動きを制御する最も基本的な部分を抽出しました.

お時間をいただきありがとうございます!

4

2 に答える 2

0

最後のフレームからの時間の変化を計算し、プレーヤーがそこからどれだけ移動するかに基づいて計算する代わりに、pygame.time.Clock.tickフレームに 1 回呼び出す必要があります。次に、フレーム間の時間は毎回同じであると想定できるため、dt常に同じになります。

現在のところ、fps が低下すると、プログラム内の他のすべてが遅くなりますが、プレーヤーは他のすべてよりも速くジャンプし始めます。経過時間に頼るのではなく、通常は fps に頼るのが最善です。

于 2013-08-19T19:31:07.657 に答える