>백엔드 개발 >파이썬 튜토리얼 >내 파이게임 충돌 감지가 항상 True를 반환하는 이유와 내 이미지 위치가 항상 (0, 0)인 이유는 무엇입니까?

내 파이게임 충돌 감지가 항상 True를 반환하는 이유와 내 이미지 위치가 항상 (0, 0)인 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-26 08:17:18186검색

Why Does My Pygame Collision Detection Always Return True, and Why Is My Image Position Always (0, 0)?

Pygame의 충돌 감지 및 이미지 위치 문제 해결

충돌 감지 문제: 항상 'True'를 반환

다음 중 하나 충돌 감지 기능이 'True'를 반환하면 안되는 가장 일반적인 이유는 잘못된 좌표를 사용하기 때문입니다. 정보. 코드에서 Ball 및 Obstacle 스프라이트에는 추가 x 및 y 속성이 있지만 Surface 객체의 get_ect() 메서드는 이러한 속성을 기반으로 위치를 자동으로 업데이트하지 않습니다.

해결책:

이 문제를 해결하려면 호출 시 topleft 키워드 인수를 사용하여 수동으로 직사각형의 위치를 ​​설정해야 합니다. get_direct():

self.rect = self.image.get_rect(topleft=(self.x, self.y))

이미지 위치 문제: 항상 (0, 0)을 반환합니다.

기본적으로 Surface 객체의 좌표는 항상 ( 0, 0), 화면 어디에 표시되는지에 상관없습니다. 게임 디스플레이에 이미지를 블릿팅할 때, 이미지를 그리고 싶은 위치에 올바른 좌표를 제공해야 합니다.

해결책:

간단히 좌표를 사용할 수 있습니다. 이미지를 블리팅할 때 ret 속성에 저장됩니다:

gameDisplay.blit(self.image, self.rect)

추가 팁:

  • 스프라이트를 관리하려면 pygame.sprite.Group을 사용하세요. 그리기 및 충돌 감지가 단순화됩니다.
  • 스프라이트에 추가 x 및 y 속성을 사용하지 마세요. 대신 위치 정보를 얻기 위해 직사각형의 위치에 의존하세요.
  • get_ect()와 같은 함수에 대한 설명서를 철저히 확인하여 동작과 요구 사항을 이해하세요.

위 내용은 내 파이게임 충돌 감지가 항상 True를 반환하는 이유와 내 이미지 위치가 항상 (0, 0)인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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