충돌 감지 및 스프라이트 위치 지정 문제 해결
코드에서 두 가지 문제가 발생합니다. 그렇지 않아야 할 때 스프라이트를 나타내는 직사각형의 위치는 (0, 0).
먼저 충돌 감지부터 살펴보겠습니다. collide_ect가 항상 'True'를 반환하는 이유는 직사각형의 위치를 올바르게 설정하지 않았기 때문입니다. pygame.Surface.get_ect()는 표면의 크기를 가진 직사각형 객체를 반환하지만 항상 (0, 0)에서 시작합니다. 스프라이트 위치에 직사각형을 배치하려면 다음 방법 중 하나를 사용해야 합니다.
또는
직사각형의 topleft 속성을 설정하면 명시적으로 스프라이트 위치에 맞춰 정렬합니다.
잘못된 스프라이트 위치에 대해서는 불필요한 self.x 및 self.y를 도입했습니다. 속성. 직사각형의 위치에 직접 의존하는 것이 더 좋습니다. 이것은 속성이 제거되고 get_ect() 호출에서 왼쪽 상단 위치가 설정된 예입니다.
또한 pygame.sprite.Group을 활용하여 스프라이트 렌더링을 처리하고 업데이트 중입니다. 이는 그룹의 모든 스프라이트를 그리므로 그리기 프로세스를 단순화합니다.
그룹을 그대로 사용하는 경우 Ball.update() 및 Obstacle.update() 메서드를 제거할 수 있습니다. 스프라이트 위치 업데이트 및 디스플레이에 이미지 그리기를 처리합니다.
위 내용은 파이게임 충돌 감지가 항상 True인 이유는 무엇이며 스프라이트가 (0, 0)에 위치하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!