0

これは私のキャラクタークラスのコードです:

right = [2, 0]

class Character(pygame.sprite.Sprite):
    def __init__(self):
        super(Character, self).__init__()

        self.image = pygame.image.load("character_n.png").convert()
        self.image.set_colorkey((25, 25, 25))

        self.rect = self.image.get_rect()

char = Character()

char.rect[0] = 375
char.rect[1] = 400

そして、ジョイスティックが右に動かされた場合にキャラクターを右に動かす私のゲームループのコード:

h_axis_pos = my_joystick.get_axis(0)
v_axis_pos = my_joystick.get_axis(1)

if h_axis_pos >= 0.50:
    if char.rect.right < 800:
       char.rect = char.rect.move(right)

このコードは、キャラクターが単純な画像のときは正常に機能しましたが、現在は機能しません。

self.rect が初期化され、選択した座標に文字が設定されるため、混乱しています。if で char.rect[0] を使用してインクリメントしようとしましたが、それでも同じエラーが表示されます。

if char.rect.right < 800:
AttributeError: 'pygame.Surface' object has no attribute 'rect'

誰かがこれに光を当てることができますか? ありがとう。

4

1 に答える 1

2

このコードでは:

 if char.rect.right < 800:
      idle = 0
      char.rect = char.rect.move(right)
      char = pygame.image.load("right_n.png")

行で:

char = pygame.image.load("right_n.png")

char を上書きし、それに pygame.Surface を割り当てています。そのため、ゲーム ループの次の繰り返しで失敗します。

于 2015-07-04T15:28:37.160 に答える