나는 기본적인 파이 게임을하고 있는데, 어디로 가져 가고 싶은지 잘 모르겠다. 그래서 지금은 기본 메커니즘에 대해서만 연구하고 있습니다.파이 게임 스프 라이트 일정 속도로 움직이기
내가 마주 친 문제는 적의 스프라이트가 플레이어 스프라이트쪽으로 이동해야한다는 것입니다. 이미 기본 벡터링을 알아 냈지만 스프라이트가 벡터를 따라 이동하기 때문에 대상에 가까워 질수록 속도가 느려집니다.
여기 내 코드가 있습니다. 이 합리적인 속도로 속도가 느려집니다하지만 그들은 또한 자신의 목표에 도달하기 전에 중지 때문에
#Enemy Mechanics
for enemy in enemy_list:
pygame.draw.rect(screen, green, (enemy.rect.x, enemy.rect.y-5, enemy.Health/4, 3), 0)
pygame.draw.rect(screen, green, (enemy.rect.x, enemy.rect.y-5, 25, 3), 1)
ppos = pPlayer.rect.x, pPlayer.rect.y
epos = enemy.rect.x, enemy.rect.y
etarget = epos[1] - ppos[1], epos[0] - ppos[0]
enemy.rect.x -= etarget[1]/20 #This is the problem
enemy.rect.y -= etarget[0]/20
#Bullet Mechanics
for bullet in bullet_list:
mpos = pygame.mouse.get_pos()
bpos = bullet.rect.x, bullet.rect.y
target = bpos[1] - mpos[1], bpos[0] - mpos[0]
dist = math.sqrt(((bpos[0] - mpos[0])**2) + ((bpos[1] - mpos[1])**2))
bullet.rect.x -= target[1]/20
bullet.rect.y -= target[0]/20
if dist < 30:
bExplode(bullet.rect.x, bullet.rect.y)
blist.remove(bullet)
bullet.kill()
enemy_hit_list = (pygame.sprite.spritecollide(bullet, enemy_list, False))
for enemy in enemy_hit_list:
enemy.Health -= 25
print(enemy.Health)
if enemy.Health <= 0:
enemy_list.remove(enemy)
all_sprites_list.remove(enemy)
bullet_list.remove(bullet)
all_sprites_list.remove(bullet)
blist.remove(bullet)
당신이 볼 수 있듯이
, 나는 20 벡터를 나누어 왔습니다. 스프라이트가 플레이어를 향한 일정한 속도로 움직이게하는 데 도움이 필요하다.
왜이 태그가 "성능"? 현재 구현이 올바르지 않을 수도 있지만 ... 너무 많은 CPU 시간이 걸리는 것입니까? 그럴 것 같지 않습니다. – abarnert
죄송합니다. 속도를 입력하면 성능이 기본값으로 설정됩니다. – Isaacashtox
아, 총알의 스칼라 속도와 같은 속도를 의미했습니다. 네, 때로는 별칭 추측에 너무 열중합니다. 아마도 총알의 성능을 최적화하고 싶지 않을 것입니다. 그렇다면 for 루프의 총구에서 다각형 소총을 시도해보십시오. :) – abarnert