그래서 지난 몇 달 동안 우주복 게임을하고있는 pygame
을 가르쳐 왔습니다.플레이어가 적의 반경 내에있는 경우 상태를 변경하십시오
나는 특정 지역을 방어하는 적의 우주선이 여러 개 있습니다. 플레이어가 특정 반경 내에 오면 적의 상태를 변경하고 싶습니다. 벡터를 사용하지 않고 초보자를위한 가장 좋은 방법은 무엇입니까?
그래서 지난 몇 달 동안 우주복 게임을하고있는 pygame
을 가르쳐 왔습니다.플레이어가 적의 반경 내에있는 경우 상태를 변경하십시오
나는 특정 지역을 방어하는 적의 우주선이 여러 개 있습니다. 플레이어가 특정 반경 내에 오면 적의 상태를 변경하고 싶습니다. 벡터를 사용하지 않고 초보자를위한 가장 좋은 방법은 무엇입니까?
프로그램에서 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
'some_condition else False'가 불필요한 경우 'return true'를 사용하면'return some_condition' 만 사용하십시오. 또한 두 점 사이의 유클리드 거리를 얻으려면 내장 된'math.hypot' 함수를 사용하십시오. 직접 이러한 기능을 다시 만들 필요가 없습니다. 그래서'is_close'는 간단하게'return math.hypot (object2.x-object1.x, object2.y-object1.y)
@DominicKexel로 단순화 될 수 있습니다. 그에 따라 대답을 업데이트했습니다. – sshashank124
는 각 틱에서 그들 사이의 거리를 계산 거리가 일정 값 이하로 떨어지면 뭔가를 ... : 그것은 다음과 같이 보일 것인가? – jonrsharpe
오케이, 진드기는 무엇을 의미합니까? – CollisionOfConcepts
메인 게임 루프 주변에서 매번 [[clock.tick()'] (http://www.pygame.org/docs/ref/time.html#pygame.time.Clock.tick) – jonrsharpe