Перемещение камеры. python

Рейтинг: 1Ответов: 1Опубликовано: 17.06.2023

Хочу реализовать скрипт, который будет перемещать камеру, при зажатой ЛКМ (и с помощью движения мышки) перемещаться вокруг объекта, так же передвижение заднего фона. Перемещение камеры есть, а вот настроить что бы задний фон передвигался не получается. python

import pygame, os, math

pygame.init()

WIN = 600
WIN1 = 800

WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
DARK_RED = (50, 0, 0)
GREEN = (0, 255, 0)
GREY = (127, 127, 127)
BLUE = (50, 153, 213)
WHITE_BLUE = (50, 255, 255)
YELLOW = (255, 255, 0)

screen = pygame.display.set_mode((WIN, WIN1), pygame.FULLSCREEN)
pygame.display.set_caption('lll')
clock = pygame.time.Clock()

font_style = pygame.font.SysFont("None", 55)
score_font = pygame.font.SysFont("None", 55)

here = os.path.abspath(".")
images = os.path.join(here, "images\\")
#ЗАДНИЙ ФОН
background_path = os.path.join(images, 'background.jpg')
background = pygame.image.load(background_path)

def touch():
    istouch = False  # Создаем переменную чтобы знать нажата мышь\палец или нет
    mouse2 = (-1000, -1000)  # Переменная для фиксированого значения мыши

    playerX = 200
    playerY = 200

    cameraX = 200
    cameraY = 200

    cur_mouse = 0
    joy_pos = 0

    while 1:
        screen.fill((RED))  # Закрашиваем окно в черный цвет
        screen.blit(background, (cameraX, cameraY))
        mouse = pygame.mouse.get_pos()  # Определяем позицию мыши\пальца
        for ev in pygame.event.get():
            if ev.type == pygame.QUIT:  # Проверяем на выход из окна
                exit()

            if ev.type == pygame.MOUSEBUTTONDOWN:  # Если мышь\палец нажата
                istouch = True  # Присваиваем истину
                mouse2 = mouse

            elif ev.type == pygame.MOUSEBUTTONUP:  # Если мышь\палец отпускаются
                istouch = False  # Присваиваем ложь

        if istouch:  # Если мышь\палец нажаты
            pygame.draw.circle(screen, (100, 100, 100), mouse2, 100)  # Рисуем круг в нажатом фиксированом месте
            cur_mouse = mouse[0] - mouse2[0], mouse[1] - mouse2[
                1]  # Определяем позицию мыши\пальца относительно середины джойстика
            angler = math.atan2(cur_mouse[0], cur_mouse[
                1])  # Определяем угол курсора джойстка относительно середины джойстика в радианах
            distance = math.sqrt(pow(cur_mouse[0], 2) + pow(cur_mouse[1],
                                                            2))  # Определяем расстояние от середины джойсткеа до курсора джойстка
            joy_pos = mouse2
            if distance > 80:  # Если расстояние от середины джойстика до курсора джойстика больше 80
                si = math.sin(angler)  # Определяем синус угла курсора относительно середины джойстика
                co = math.cos(angler)  # Определяем косинус угла курсора относительно середины джойстика
                joy_pos = (math.degrees(si) * 1.4 + mouse2[0], math.degrees(co) * 1.4 + mouse2[
                    1])  # устанавливаем позицию курсора джойстика с множителем 1.4
                distance = 80  # Устанавливаем расстояние до курсора джойстка относительно середины джойсткка 80
            else:
                joy_pos = mouse

            pygame.draw.circle(screen, (234, 234, 234), joy_pos,
                           50)  # Рисуем курсор джойстика на экране по позиции переменной joy_pos

            playerX += math.sin(angler) * distance / 70
            playerY += math.cos(angler) * distance / 70
        pygame.draw.circle(screen, (GREEN), (playerX, playerY), 30)
        clock.tick(60)  # Ограничиваем кадры в секунду до 60
        pygame.display.update()  # Обновляем поверхность экрана

Ответы

▲ 0
cameraX = -playerX
cameraY = -playerY