이유:
충돌 테스트 Sprite 객체의 ret 속성을 사용하여 교차 여부를 결정합니다. 그러나 코드의 get_ect() 메소드가 직사각형의 위치를 의도한 좌표로 올바르게 설정하지 않습니다.
해결책:
get_ect()를 사용할 때 , 키워드 인수를 사용하여 위치를 지정하거나 직사각형의 왼쪽 위 가상 속성에 할당할 수 있습니다. 다음 수정된 코드를 사용하세요:
self.rect = self.image.get_rect(topleft=(self.x, self.y))
이유:
에 의존하는 대신 불필요한 x 및 y 속성을 스프라이트에 추가했습니다. 직사각형의 위치에 있습니다. 결과적으로 표면 개체에는 기본 위치가 없기 때문에 직사각형의 위치는 항상 (0, 0)으로 설정됩니다.
해결책:
x 및 y 속성을 제거하세요. Sprite 객체의 위치를 설정하려면 ect 속성을 사용하세요. 수정된 코드는 다음과 같습니다.
class Ball(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("ball.png") self.rect = self.image.get_rect(topleft=(280, 475)) self.col = False
pygame.sprite.Group을 사용하여 Sprite 개체를 관리하면 코드를 더욱 단순화할 수 있습니다. 그리기 및 업데이트가 자동으로 처리됩니다.
obstacle = Obstacle() ball = Ball() # Create a sprite group and add the sprites to it. all_sprites = pygame.sprite.Group([obstacle, ball]) while not crashed: # [... event handling and game logic] gameDisplay.fill((255, 255, 255)) # Draw all sprites using the group's draw method. all_sprites.draw(gameDisplay) # [... other game loop tasks]
위 내용은 내 파이게임 충돌 감지가 항상 True를 반환하는 이유는 무엇이며 내 이미지 직사각형 위치가 (0, 0)으로 잘못 설정된 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!