1

昨日、pygameの使い方を学び始めました。私は非常に役に立ち、そのすべてのチュートリアルと例などに従ったこの1冊の本を読みました。本当にシンプルな横スクロール/プラットフォームゲームを作ってみたかったのですが、この本は、上下左右の動きに合わせてスプライトを変更する方法や、アニメーション画像を循環する方法を説明せずに、3Dモデリングにかなり速く飛び込みました。

私は今日、スプライトを表示して上下左右に動かせるようにするためにすべてを費やしてきました。ただし、スクリプトが単純なため、静止画像を使用し、変更を拒否します。

スプライトを変更する方法について誰かが私にいくつかの知識を教えてもらえますか?または、そうするチュートリアルに私を送ってください?

すべてのリファレンスとそれを実験している人は常に生成された形状を使用しているので、私はそれらを扱うことができません。

どんな助けでも大歓迎です。

追加:複雑なアニメーションをシーンに配置する方法を理解する前に、左または右への押し上げに関して、「プレーヤー」を動かない画像に変更する方法を知りたいと思います。人々がその何かが本当に複雑であることを知っているなら、多分斜めです。

追加:これは私がこれまでにまとめたものです。http://animania1.ca/ShowFriends/dev/dirmove.rarは、方向/アクションでアクションの列を設定し、小さな列設定コードでループを循環させて、アニメーション?(または、それは効率の重大な誤用でしょうか?)

4

3 に答える 3

1

左/右を押すと、スプライトシートの最初の 2 つの画像が交互に表示される愚かな例を次に示します。

import pygame

quit = False
pygame.init()
display = pygame.display.set_mode((640,480))
sprite_sheet = pygame.image.load('sprite.bmp').convert()

# by default, display the first sprite
image_number = 0

while quit == False:
    event = pygame.event.poll()
    no_more_events = True if event == pygame.NOEVENT else False

    # handle events (update game state)
    while no_more_events == False:
        if event.type == pygame.QUIT:
            quit = True
            break
        elif event.type == pygame.NOEVENT:
            no_more_events = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                image_number = 0
            elif event.key == pygame.K_RIGHT:
                image_number = 1

        event = pygame.event.poll()

    if quit == False:
        # redraw the screen
        display.fill(pygame.Color('white'))
        area = pygame.Rect(image_number * 100, 0, 100, 150)
        display.blit(sprite_sheet, (0,0), area)
        pygame.display.flip()

私はこれまで Pygame を実際に使用したことがないので、このコードを例として取り上げるべきではないかもしれません。私はそれが基本を示していることを願っています。

より完全にするために、更新する前にしばらく待つ必要があります。たとえば、1 秒あたり 60 回だけ更新するように制御します。

また、作業を簡素化するスプライト クラスを作成すると便利です。コンストラクターでスプライト フレームのサイズを渡すと、次のフレームの選択、スプライトのブリットなどの作業を自動的に行うupdate()およびのようなメソッドが作成されます。draw()

Pygame はその目的のために基本クラスを提供しているようです: link text

于 2009-04-09T15:38:23.833 に答える
1

おい、あなたがしなければならない唯一のことはオフコースです

pygame をインポートし、必要な他のすべてのものを型コードなどにします。

class .your class nam here. (pygame.sprite.Sprite):
     def __init__(self):
          pygame.sprite.Sprite.init(self)
          self.image=pygame.image.load(your image and path)
          self.rect=self.image.get_rect()
          x=0
          y=0

          # any thing else is what you want like posistion and other variables

     def update(self):
          self.rect.move_ip((x,y))

以上です!!!!しかし、それで終わりではありません。これを行うと、必要なスプライトを移動するだけです

于 2009-11-19T20:29:26.313 に答える
0

Pygameについてはよくわかりませんが、SDL(Pygameのベース)を使用しました。

使用する場合Surface.blit()リンクテキスト

オプションのarea引数を使用して、サーフェスのどの部分を描画するかを選択できます。したがって、アニメーションの一部であるすべての画像を1つのファイルに入れると、描画する画像を選択できます。それは「クリッピング」と呼ばれます。

ゲームの状態を更新し(必要に応じてスプライトの現在のイメージを変更し)、その状態を使用してスプライトを描画するゲームループがあると思います。

于 2009-04-09T13:10:39.297 に答える