2014-03-26 3 views
0

그래서 지난 몇 달 동안 우주복 게임을하고있는 pygame을 가르쳐 왔습니다.플레이어가 적의 반경 내에있는 경우 상태를 변경하십시오

나는 특정 지역을 방어하는 적의 우주선이 여러 개 있습니다. 플레이어가 특정 반경 내에 오면 적의 상태를 변경하고 싶습니다. 벡터를 사용하지 않고 초보자를위한 가장 좋은 방법은 무엇입니까?

+3

는 각 틱에서 그들 사이의 거리를 계산 거리가 일정 값 이하로 떨어지면 뭔가를 ... : 그것은 다음과 같이 보일 것인가? – jonrsharpe

+0

오케이, 진드기는 무엇을 의미합니까? – CollisionOfConcepts

+0

메인 게임 루프 주변에서 매번 [[clock.tick()'] (http://www.pygame.org/docs/ref/time.html#pygame.time.Clock.tick) – jonrsharpe

답변

1

프로그램에서 is_close이라는 메서드를 만든 다음 각 player and enemy 비교를 호출 할 수 있습니다.

def is_close(object1, object2, distance): 
    return math.hypot(object2.x-object1.x, object2.y-object1.y) < float(distance) 

... #rest of your code 

while True: #This is your main while loop 
    ... #rest of your code 

    for enemy in enemies: 
     if is_close(player, enemy, 25): 
      enemy.state = new_state #change state, this may simply be a color change 
+0

'some_condition else False'가 불필요한 경우 'return true'를 사용하면'return some_condition' 만 사용하십시오. 또한 두 점 사이의 유클리드 거리를 얻으려면 내장 된'math.hypot' 함수를 사용하십시오. 직접 이러한 기능을 다시 만들 필요가 없습니다. 그래서'is_close'는 간단하게'return math.hypot (object2.x-object1.x, object2.y-object1.y) sloth

+0

@DominicKexel로 단순화 될 수 있습니다. 그에 따라 대답을 업데이트했습니다. – sshashank124

관련 문제