Почему использование камеры нарушает поиск угла с помощью math.atan2? [дубликат]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему использование камеры нарушает поиск угла с помощью math.atan2? [дубликат]

Сообщение Anonymous »

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

Код: Выделить всё

def angle_to_mouse(self):
mouse_pos = vec(pygame.mouse.get_pos())
gun_pos = vec(self.rect.center)

dx = mouse_pos.x - gun_pos.x
dy = -(mouse_pos.y - gun_pos.y)
if dx != 0:
return math.degrees(math.atan2(dy, dx))

Код: Выделить всё

self.image = pygame.transform.rotate(self.base_image, self.angle_to_mouse())

Как только я добавил камеру, пистолет начал вести себя странно. Если мышь когда-нибудь окажется близко к пистолету, пистолет застрянет и будет поворачиваться в диапазоне от 0 до трех градусов.

Код: Выделить всё

class CameraGroup(pygame.sprite.Group):
def __init__(self, target=None, *sprites):
super().__init__(*sprites)
self.target = target
self.offsetx = 0
self.offsety = 0

def get_offset(self):
self.offsetx = WIDTH / 2 - self.target.rect.x
self.offsety = HEIGHT / 2 - self.target.rect.y
return vec(self.offsetx, self.offsety)

def camera_draw(self, screen):
self.get_offset()
for sprite in self.sprites():
offset_pos = (
round(sprite.rect.x + self.offsetx),
round(sprite.rect.y + self.offsety),
)
screen.blit(sprite.image, offset_pos)

def set_target(self, sprite):
self.target = sprite
Сначала я предположил, что это как-то связано с радианами, и убедился, что конвертировал угол в градусы. Затем я попытался вычесть смещение камеры от Gun_pos в методе angular_to_mouse. Я сделал это, чтобы попытаться получить «истинное» положение пистолета до того, как камера что-нибудь изменит. Однако проблема не исчезла.
Будем благодарны за любую помощь. Заранее спасибо.
Проект Github

Подробнее здесь: https://stackoverflow.com/questions/787 ... math-atan2
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему ATAN2 дал мне отличные ценности от ASIN? [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • Эффект перехода начинается с ВЕРХНЕГО ЛЕВОГО угла, но нужно, чтобы он начинался с левого угла.
    Anonymous » » в форуме CSS
    0 Ответы
    78 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при вычислении фазового угла с использованием графика углового угла.
    Anonymous » » в форуме Python
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при вычислении фазового угла с использованием графика углового угла.
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Временная сложность Math.min и Math.max
    Anonymous » » в форуме JAVA
    0 Ответы
    62 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»