1) Последующие изображения, например новое меню, получаются созданы в том месте, где они были бы созданы, если бы я не переместил камеру. Таким образом, если я переместим камеру на 30 пикселей вправо, последующие изображения, которые должны были быть созданы в (0,0), теперь будут созданы в (30,0).
Это также относится к взаимодействию с кнопками; в приведенном выше примере, чтобы использовать кнопку, которая была бы создана в (0,0), мне нужно удерживать указатель мыши на (0,0), даже если кнопка теперь отображается в (30,0)
Итак, если я передвигаю камеру, я получаю такие результаты, как https://i.sstatic.net/yfiRH.png (видите, как я выбираю новую игру, когда моя мышь находится над ней? Где находится моя мышь, там, где была кнопка до того, как я переместил камеру) или https://i.sstatic.net/VjOoe.png (игра запоминает, что я перемещал камеру в предыдущем меню, и теперь создает следующее меню в то же место, где было исходное меню до перемещения камеры
2) Если я создаю изображение, превышающее ширину или высоту экрана, а затем перемещаю камеру, я на самом деле не видите остальную часть изображения. Вместо этого я вижу что-то вроде этого: https://i.sstatic.net/JwtQs.png
Итак, вместо того, чтобы показывать остальную часть карты, игра просто движется снимок (размером ширина экрана по высоте экрана) примерно: https://i.sstatic.net/S64q2.png - но если бы я увеличил меню, вы увидите, что карта на самом деле должна быть намного больше, и я, очевидно, хочу чтобы увидеть остальную часть карты, когда я перемещаю камеру: https://i.sstatic.net/YSN7s.png
Соответствующие переменные объявлены в классе Controller:
Код: Выделить всё
windowWidth = 800 #1792
windowHeight = 600 #896
windowResize = False
cameraactive = False
camera = pygame.display.set_mode((windowWidth, windowHeight))
screen = pygame.Surface((windowWidth, windowHeight))
mouse = pygame.mouse.get_pos()
camerax = 0
cameray = 0
sprites = pygame.sprite.Group()
# All the other sprite.Group()s, such as spritesciv, are created just like this one
spriteslist = [sprites , spritesciv , tiles , cities , texttiles , textcities , textcitiesselected , buttonscitiesselected , textbuttonscitiesselected , buttons , buttonsselectciv , buttonsrandomciv , textinputs]
buttonslist = [tiles , cities , buttonscitiesselected , buttons , buttonsselectciv , buttonsrandomciv , textinputs]
Код: Выделить всё
def on_event(self):
keys = pygame.key.get_pressed()
for event in pygame.event.get():
if event.type == pygame.QUIT:
self._running = False
if keys[K_ESCAPE]:
self._running = False
if event.type == MOUSEMOTION:
Controller.mouse = pygame.mouse.get_pos()
if event.type == pygame.VIDEORESIZE: #Controller.windowResize
screensize = event.size
Controller.windowWidth = event.w
Controller.windowHeight = event.h
screen = pygame.display.set_mode(screensize,RESIZABLE)
if self.cameraactive:
if Controller.mouse[0]
Подробнее здесь: [url]https://stackoverflow.com/questions/59706332/how-to-create-a-camera-for-looking-at-a-world-map-top-down-no-player-character[/url]