>백엔드 개발 >파이썬 튜토리얼 >파이게임 충돌 감지가 항상 True인 이유는 무엇이며 스프라이트가 (0, 0)에 위치하는 이유는 무엇입니까?

파이게임 충돌 감지가 항상 True인 이유는 무엇이며 스프라이트가 (0, 0)에 위치하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-16 19:52:28293검색

Why is my Pygame collision detection always True, and why are my sprites positioned at (0, 0)?

충돌 감지 및 스프라이트 위치 지정 문제 해결

코드에서 두 가지 문제가 발생합니다. 그렇지 않아야 할 때 스프라이트를 나타내는 직사각형의 위치는 (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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.