персонаж двигается быстрее чем передвигается камера. python

Рейтинг: 1Ответов: 0Опубликовано: 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)
#screen.blit(background, (cameraX, cameraY)) НА 45 СТРОКЕ
pygame.display.update()

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

    playerX = 200
    playerY = 200

    cameraX = 200 #Камера заднего фона
    cameraY = 200 #Камера заднего фона

    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), 10)

        #БЕСКОНЕЧНАЯ КАРТА
        cameraX = -playerX
        cameraY = -playerY

        clock.tick(60)  # Ограничиваем кадры в секунду до 60
        pygame.display.update()  # Обновляем поверхность экрана


def load():
    load = True
    while load:
        screen.fill(BLACK)
        #FON LOAD
        FON_load_path = os.path.join(images, "FON_ZAGRUZKI.png") #Картинка фона загрузки
        fon_load = pygame.image.load(FON_load_path) #Загрузка картинки фона загрузки
        screen.blit(fon_load, (0,0)) #Вывод на экран картинки фона загрузки

        #TEXT LOAD
        TEXT_load_path = os.path.join(images, 'continue_load.png')  #Текст загрузки
        text_load = pygame.image.load(TEXT_load_path) #Загрузка текста(картинки) загрузки
        screen.blit(text_load, (0,500)) #Вывод на экран
        pygame.display.update() #Обновление экрана

        for event in pygame.event.get():
            #print('event.pos:', event.pos)
            if event.type == pygame.MOUSEMOTION:
                if event.pos[0] > 55 and event.pos[1] > 750 and event.pos[0] < 420 and event.pos[1] < 795: #Позиция текста загрузки для захода в игру
                    #print('123')
                    screen.fill(WHITE)
                    load = False
                    Game()

def Game():
    game = True

    while game:
        clock.tick(60)
        screen.fill(BLACK)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                quit()
        touch() #управление, карта

        pygame.display.update()

load()

Ответы

Ответов пока нет.