Вражеские снаряды атакуют способ быстро решить проблему - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь заставить вражеские пули атаковать игрока, но его атакующий способ слишком быстрый. Я не знаю, почему как атаковать игрока

          for shootss in shootsright:


                shootss.x += shootss.xspeed
                shootss.y += shootss.yspeed
                if shootss.x > 500 or shootss.x < 0 or shootss.y > 500 or shootss.y < 0:
                    shootsright.pop(shootsright.index(shootss))




            if len(shootsright) < 1:
                start_x = round(enemyshoots1.x+enemyshoots1.width-107)
                start_y = round(enemyshoots1.y + enemyshoots1.height-50)
                target_x = playerman.x+playerman.width//2
                target_y = playerman.y+playerman.width//2
                dir_x, dir_y = target_x - start_x, target_y - start_y
                distance = math.sqrt(dir_x**2 + dir_y**2)
                if distance > 0:
                    shootsright.append(Boolss(start_x,start_y,(0,0,0),dir_x, dir_y))
        #------------------------------------------------------------------------------

1 Ответ

0 голосов
/ 17 июня 2020

Проблема здесь:

start_x = round(enemyshoots1.x+enemyshoots1.width-107)
start_y = round(enemyshoots1.y + enemyshoots1.height-50)
target_x = playerman.x+playerman.width//2
target_y = playerman.y+playerman.width//2
dir_x, dir_y = target_x - start_x, target_y - start_y

Если вы напечатаете dir_x и dir_y, вы увидите, что значения очень высокие. Вы, вероятно, добавляете эти значения каждый кадр к позиции маркера. Вот почему они покидают экран до того, как вы действительно их увидите.

Вы можете попробовать это:

BULLET_SPEED = 5

delta_x, delta_y = target_x - start_x, target_y - start_y
distance = math.sqrt(delta_x ** 2 + delta_y ** 2)
dir_x = BULLET_SPEED * delta_x / distance
dir_y = BULLET_SPEED * delta_y / distance

Учтите, что это решение не округляет значения, и pygame может вызвать исключение, потому что координат со значениями с плавающей запятой. Вы должны округлить координаты, прежде чем использовать их для рисования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...