pygameの:スプライトは、移動の方向による変化
質問
私はちょうど昨日、pygameのを使用する方法を学び始めました。私はスーパー有用であり、そのすべてのチュートリアルと例とかを追ったこの1冊の本を読みました。私は本当に簡単なサイドスクロール/プラットのゲームを作ってみたかったが、本はみかん上下、左右、どのようにアニメーション画像を順番にの移動のためのスプライトを変えるようにする方法を指示するアウトで3Dモデリングにかなり速い飛び込んだ。
私が表示され、左右上下に動き回ることができるようにするスプライトを取得しようとしているすべての今日費やしてきました。しかし、理由は簡単なスクリプトでは、静的なイメージを使用して、変更を拒否します。
誰も私のスプライトを変更する方法のいくつかの知識を与えることができます。それともんチュートリアルに私を送って?
私は彼らと一緒に仕事ができないよんので、すべての参照と人は常に生成された形状を使用して、HA、それを試してます。
すべてのヘルプは非常に高く評価されます。
を追加しました:私のシーンで複雑なアニメーションを配置する方法を考え出す前に、私は私が左または右上下に押しに関しては動かない画像に私の「プレーヤーの変更を行うことができます方法を知っているしたいと思います。人々は本当に複雑なその何かを知っていれば、多分対角線ます。
追加:これは私がこれまでにまとめたものです。 http://animania1.ca/ShowFriends/dev/dirmove.rar に存在することになります方向/アクションを作る可能性は、アクションの列を設定しても、ほとんどのカラム設定コードを持っているアニメーションを行うためのループで、それはサイクルをダウンさせますか? (またはその効率の総ミス使用でしょうか?)
解決
ここでは、左/右を押しspritesheetの二つの第一の画像の間alernatesダムの例であります
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()
私は本当にので、多分、このコードは実際の例として取られるshoudln't前にpygameのを使用したことがありません。私はそれが基本を示し願っています。
私は、例えば、更新前にいくつかの時間を待つ必要があり、より完全なものにするに私は毎秒60回更新制御ます。
また、あなたの仕事を単純化するスプライトクラスを書くのは便利だろう。あなたは、コンストラクタでのスプライトのフレームのサイズを通過すると、あなたは自動的にように、次のフレームを選択するスプライトをブリッティングとの仕事をするだろうupdate()
とdraw()
などのmethodesを持っていると思います。
pygameのは、その目的のために、基本クラスを提供しているようだ:リンクテキストでます。
他のヒント
男あなたがしなければならない唯一の事はoffcourseである
インポートpygameのダウンロードおよび必要なすべての他のもの その後、型コードとスタッフ.......... それはSPRIを作るあなたに来るとき、
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))
と、それのthats !!!!しかし最後はないthatsの。あなたがこれを行う場合は、ONYは、スプライトをしただろう それを動かすために必要な
私がpygameのについて多くを知らないが、私が使用したSDLます。
あなたはSurface.blit()
を使用する場合:リンクテキストの
あなたは、描画する表面のどの部分を選択するには、オプションのarea
引数を使用することができます。
あなたは、単一のファイル内のアニメーションの一部であるすべての画像を置くのであれば、あなたが描画される画像を選択することができます。
それは、 "クリッピング" と呼ばれています。
私はあなたがゲームの状態を更新するゲームループ、そしてそれらの状態を使用してスプライトを描画する(必要に応じてスプライトの現在の画像を変更する)必要があります推測します。