2

ウィンドウがポップアップし、矢印キーでスプライトを画面上で移動できます。スプライトの衝突時にスプライトとの衝突機能があることは知っていますが、それらが可視領域の外に移動するのを止める方法がわかりません。何かご意見は?

私の移動機能:

def moveme(self,coords)
    #coords=(x,y)
    self.rect.move_ip(coords)

イベントハンドラーには、次のようなものを使用しています

keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
    character.moveme((0, -4))

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

4

3 に答える 3

6

移動後にclamp_ipを使用するのはどうですか?

Rect.clamp_ip(Rect): return None

それはあなたの場合あなたの窓のタプルである長方形を取ります。

したがって、コードは次のようになります。

screen_rect = pygame.Rect((0, 0), (700, 400))

def moveme(self,x,y):
    self.rect.move_ip((x,y))
    self.rect.clamp_ip(screen_rect)
于 2013-01-17T22:37:53.067 に答える
1

rectプロパティを調べた後、自分で答えを見つけました..これがコードです

def moveme(self,x,y):
    if self.rect.left + x < 0:
        self.rect.left = 0
    elif self.rect.right + x > 700:
        self.rect.right = 700
    elif self.rect.top + y < 0:
        self.rect.top = 0
    elif self.rect.bottom + y > 400:
        self.rect.bottom = 400
    else:
        self.rect.move_ip((x,y))

400 はウィンドウの高さ、700 は幅です。

于 2013-01-17T20:46:06.887 に答える