персонаж двигается быстрее чем передвигается камера. python
Почему персонаж быстрее чем двигается камера? 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()
Источник: Stack Overflow на русском