2014-07-13 4 views
0

저는 타워 방어 게임을 만들고 있으며 타워의 범위에 대해서는 타워가있는 중심을 중심으로하고 있습니다. 비록 pygame.draw.rect()를 사용하여 원을 그릴 때 완전히 다른 위치에있는 것처럼 보입니다. 여기에 대한 코드가 있습니다.파이썬의 드로잉 서클이 정확한 위치에 있지 않습니다.

변수 : 적들이 원의 범위에있는 경우 확인을 위해

Radius = 50 
Center_X = 100 
Center_Y = 100 

: 원을 그리기 위해

for Enemy in Enemies: 
    if ((Enemy['Rect'].left + 10) - Center_X)^2 + ((Enemy['Rect'].top + (35/2)) Center_Y)^2 < Radius^2: 
     print(1) 

:

pygame.draw.circle(Window, Black, (Center_X, Center_Y), Radius, 0) 
+1

그려진 원은 무엇에 비해 완전히 다른 위치에있을 것 같다? – xander

+0

당신은 당신이 원하는 것과 당신이 얻은 것을 보여주는 예를 보여줄 수 있습니까? – drum

+0

방정식을 사용하여 만든 원과 비교하면. 적이 그려진 원 안에 있지 않더라도 방정식이 적을 탐지하는 것으로 보입니다. 원수가 그려진 원을 만지지 않아도 콘솔에 '1'이 인쇄됩니다. – Gaspump1112

답변

0

사용 pygame.Rect() 스프라이트의 높은 게재 순위를 유지.

Center_X = 100 
Center_Y = 100 

positon = pygame.Rect() 
positon.centerx = Center_X 
positon.centery = Center_Y 

지금 당신은 그것을

pygame.draw.circle(Window, Black, position.center, Radius, 0) 

을 그릴 수 있으며, 파이 게임 문서 도구에서 자세한 내용을 참조하십시오 collision detection

당신과 함께 pygame.Rect()을 사용할 수 있습니다 : pygame.Rect()

당신은 circle collision detection

을 가지고 pygame.Sprite()을 사용할 수 있습니다
0

파이썬에서 지수 연산자는 **이 아니고 ^이 아니며 bitwise XOR operator입니다.

2^2 
0 
32^1 
33 

대신 :

2**2 
4 
32**1 
32 

그래서 :

if ((Enemy['Rect'].left + 10) - Center_X) ** 2 + ((Enemy['Rect'].top + (35/2)) - Center_Y)**2 < Radius**2: 
관련 문제