Перемещение камеры. 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)
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() # Обновляем поверхность экрана
Источник: Stack Overflow на русском