Pygame은 rect.move에 float를 사용하도록 허용하지 않지만 필요합니다.

Aug 18 2020

나는 최근의 버전을 다시 한 달 착륙선을 파이썬 3 파이 게임에 (당신은, 기존의 복고풍 게임을 알고) : 내 착륙선 이동 ( rect.move) 때문에 중력의 y 축을 따라 각 프레임을 \.

문제 :
1m / s에 도달 할 때까지 rect.move에 추가 된 y 값은 1 미만의 float int()입니다. 파이 게임은 수레를 좋아하지 않으므로 반올림하는 데 사용해야 합니다.
Tkinter의 이전 버전에서 착륙선의 y 좌표는 다음과 같습니다.

0.01
0.02
...
0.765
1.03
1.45
...

파이 게임에서는

0
0
0
...
1
1
1
2
2
...

움직임이 유동적이지 않기 때문에 정말 짜증납니다. 누군가 이것을 해결하는 방법을 알고 있습니까? 처럼 플로트를 rect.move? 미리 감사드립니다!

답변

4 Rabbid76 Aug 18 2020 at 19:29

pygame.Rect은 화면의 영역을 나타 내기 때문에 pygame.Rect개체는 정수 데이터 만 저장할 수 있습니다.

Rect 객체의 좌표는 모두 정수입니다. [...]

부동 소수점 정확도로 개체 위치를 저장하려면 개체의 위치를 ​​각 속성에 별도의 변수에 저장하고 개체를 동기화해야 pygame.Rect합니다. round좌표를 지정 .topleft하고 직사각형 의 위치 (예 :)에 할당합니다 .

x, y = # floating point coordinates
rect.topleft = round(x), round(y)
Dragonwarrior Aug 18 2020 at 19:29

나는 그것을 직접 테스트하지 않았으므로 이것이 작동하지 않으면 미안하지만 파이썬이 대신 문자열로 숫자를 취하고 있다고 생각합니다. int(variable)

당신은해야합니다 float(variable)