Eleve sua experiência de jogo com os jogos Python Arcade incorporando uma câmera.
A biblioteca Arcade do Python é uma estrutura poderosa e amigável para a criação de jogos 2D. Um recurso importante que pode melhorar muito a jogabilidade e a experiência do usuário é a adição de uma câmera. Adicionar uma câmera ao seu jogo permite a manipulação dinâmica da janela de visualização, permitindo que o jogador explore mundos de jogo maiores, foque em áreas específicas ou rastreie objetos em movimento.
Ao mover o ponto de vista da câmera, você pode criar efeitos visualmente atraentes, aprimorar a mecânica de jogo e proporcionar uma experiência de jogo mais envolvente.
Crie um jogo simples
Antes de começar, instale o pip no seu dispositivo e use o comando abaixo para instalar o videogames módulo:
pip instalar fliperama
Agora, comece criando um jogo básico de rolagem lateral onde o jogador controla um personagem que pode se mover para a esquerda e para a direita usando as teclas de seta.
O código usado neste artigo está disponível neste
Repositório GitHub e é gratuito para você usar sob a licença do MIT.Além disso, você pode adicionar um obstáculo para o jogador navegar.
importar videogames
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
MOVEMENT_SPEED = 5aulaMeu jogo(videogames. Janela):
def__iniciar__(auto, largura, altura):
super().__init__(largura, altura)
self.player_x = largura // 2
self.player_y = altura // 2defconfigurar(auto):
arcade.set_background_color (arcade.color. CÉU AZUL)defon_draw(auto):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. VERMELHO)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VERDE)defatualizar(auto, delta_time):
passardefon_key_press(auto, chave, modificadores):
se chave == arcade.key. ESQUERDA:
self.player_x -= MOVEMENT_SPEED
elif chave == arcade.key. CERTO:
self.player_x += MOVEMENT_SPEED
se __nome__ == "__principal__":
jogo = MeuJogo (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()
Configurando a Câmera
Para adicionar uma câmera ao jogo, crie um Câmera classe que gerencia a posição e o movimento da câmera. Esta classe terá atributos como camera_x e camera_y para armazenar as coordenadas da câmera.
aulaCâmera:
def__iniciar__(auto):
self.camera_x = 0
self.camera_y = 0
Movimento da câmera com entradas de teclado
Em seguida, modifique o jogo on_key_press método para incluir câmera movimento baseado nas entradas do jogador. Quando o jogador se move para a esquerda ou para a direita, você pode atualizar a posição da câmera de acordo. Além disso, ajuste o código de desenho para levar em consideração a posição da câmera ao renderizar os objetos do jogo.
aulaMeu jogo(videogames. Janela):
def__iniciar__(auto, largura, altura):
super().__init__(largura, altura)
self.camera = Camera()
self.player_x = largura // 2
self.player_y = altura // 2defon_key_press(auto, chave, modificadores):
se chave == arcade.key. ESQUERDA:
self.player_x -= MOVEMENT_SPEED
self.camera.camera_x -= MOVEMENT_SPEED
elif chave == arcade.key. CERTO:
self.player_x += MOVEMENT_SPEED
self.camera.camera_x += MOVEMENT_SPEED
defon_draw(auto):
arcade.start_render()
arcada.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. VERMELHO)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VERDE)
Movimento da câmera com entradas do mouse
Além das entradas do teclado, você também pode ativar o movimento da câmera com base nas entradas do mouse. Por exemplo, você pode permitir que o jogador mova a câmera arrastando a tela. Para conseguir isso, modifique o on_mouse_drag método para atualizar a posição da câmera com base no movimento do mouse.
aulaMeu jogo(videogames. Janela):
defon_mouse_drag(auto, x, y, dx, dy, botões, modificadores):
se botões == arcada. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy
Incluindo Recursos Adicionais
Adicionar uma câmera ao seu jogo abre um mundo de possibilidades para recursos e efeitos adicionais. Aqui estão alguns exemplos de como você pode aprimorar ainda mais seu jogo usando o sistema de câmera.
Funcionalidade de zoom
Para implementar a funcionalidade de zoom, você precisa introduzir um ampliação variável no Câmera classe e modificar o on_mouse_scroll método para atualizar o nível de zoom com base no movimento da roda do mouse. Você também precisa ajustar o set_viewport parâmetros para considerar o nível de zoom.
aulaCâmera:
def__iniciar__(auto):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0aulaMeu jogo(videogames. Janela):
defon_mouse_scroll(auto, x, y, scroll_x, scroll_y):
self.camera.zoom += scroll_y * 0.1
defon_draw(auto):
arcade.start_render()
arcada.set_viewport(
self.camera.camera_x * self.camera.zoom,
(self.camera.camera_x + SCREEN_WIDTH) * self.camera.zoom,
self.camera.camera_y * self.camera.zoom,
(self.camera.camera_y + SCREEN_HEIGHT) * self.camera.zoom
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. VERMELHO)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VERDE)
Movimento suave da câmera
Para obter um movimento de câmera mais suave, você pode introduzir uma técnica de interpolação chamada interpolação linear (lerp). Modifique o atualizar método para mover gradualmente a câmera em direção a uma posição de destino usando lerp. Isso cria um efeito de transição suave.
aulaCâmera:
def__iniciar__(auto):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1defatualizar(auto):
self.camera_x = arcade.lerp (self.camera_x, self.target_x, self.lerp_speed)
self.camera_y = arcade.lerp (self.camera_y, self.target_y, self.lerp_speed)aulaMeu jogo(videogames. Janela):
defatualizar(auto, delta_time):
self.camera.target_x = self.player_x - SCREEN_WIDTH // 2
self.camera.target_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()
defon_draw(auto):
arcade.start_render()
arcada.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. VERMELHO)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VERDE)
Restrições da câmera
Para evitar que a câmera ultrapasse certos limites, você pode introduzir restrições. Por exemplo, você pode definir uma posição mínima e máxima da câmera e garantir que a câmera permaneça dentro desses limites.
aulaCâmera:
def__iniciar__(auto):
self.camera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600defatualizar(auto):
self.camera_x = max (self.min_x, min (self.camera_x, self.max_x))
self.camera_y = max (self.min_y, min (self.camera_y, self.max_y))aulaMeu jogo(videogames. Janela):
defatualizar(auto, delta_time):
self.camera.camera_x = self.player_x - SCREEN_WIDTH // 2
self.camera.camera_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()
defon_draw(auto):
arcade.start_render()
arcada.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. VERMELHO)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VERDE)
Estes são apenas alguns exemplos de como você pode aproveitar o sistema de câmera para incluir recursos e efeitos adicionais em seus jogos do Python Arcade.
Você também pode adicionar muitos outros recursos adicionais aos seus jogos baseados em Python. Por exemplo, você pode fazer a câmera lembrar sua posição quando o jogador se move para um nível diferente. Isso garante que a visão permaneça a mesma durante a transição entre os níveis, proporcionando uma experiência suave e consistente para o jogador.
Práticas recomendadas para um sistema de câmera
Ao implementar um sistema de câmera em seu jogo Python Arcade, é essencial seguir as práticas recomendadas para garantir a funcionalidade ideal e uma experiência de jogador tranquila. Aqui estão algumas diretrizes importantes a serem lembradas:
- Evite movimentos excessivos da câmera: embora a câmera possa adicionar elementos dinâmicos ao seu jogo, é crucial encontrar um equilíbrio e evitar movimentos excessivos da câmera. Mudar constantemente a posição da câmera pode desorientar os jogadores e dificultar a navegação no mundo do jogo.
- Teste em diferentes resoluções e proporções: é essencial testar seu sistema de câmera em várias resoluções de tela e proporções para garantir que funcione bem em diferentes dispositivos e configurações. Isso o ajudará a identificar quaisquer problemas relacionados ao dimensionamento da viewport, ao posicionamento do objeto ou aos ajustes de proporção.
- Otimizar renderização: o sistema de câmera pode afetar potencialmente o desempenho do jogo, especialmente ao renderizar grandes mundos de jogos ou vários objetos. Para otimizar a renderização, determine quais objetos estão fora da visão da câmera e exclua-os da renderização.
- Lidar com casos extremos: preste atenção aos casos extremos em que a câmera pode encontrar cenários específicos, como limites, detecção de colisão ou objetos sobrepostos. Certifique-se de que o sistema de câmera lide com esses casos com elegância e forneça transições suaves ou dicas visuais apropriadas para indicar limitações ou interações com o ambiente do jogo.
Seguindo essas práticas recomendadas, você pode criar um sistema de câmera robusto e fácil de usar que se integra perfeitamente aos seus jogos Python Arcade.
Torne os jogos mais divertidos usando a câmera
Ao adicionar uma câmera aos seus jogos do Python Arcade, você pode melhorar muito a imersão e o envolvimento do jogador. Seja criando mundos de jogo expansivos, focando em áreas críticas ou rastreando objetos em movimento, o sistema de câmera fornece uma ferramenta poderosa para desenvolvedores de jogos.
Aproveitando o movimento da câmera, zoom e efeitos adicionais, você pode criar experiências fascinantes que cativam os jogadores e os fazem voltar para mais.