Eu sou novo em design de jogos e realmente não sei como as coisas são feitas. Estou pensando em construir um jogo para iOS em que um navio tenha que voar o mais alto possível (em velocidades variáveis), coletando power-ups, etc., a caminho.
Qual é o caminho a percorrer aqui? O fundo e os itens devem rolar para baixo a partir do topo ou o navio deve realmente voar para cima movendo a vista com ele?
Respostas:
É tudo relativo. Realmente, você está sempre transformando sua visão em relação à sua posição fixa no jogador.
Então, esquecendo a tela por enquanto, digamos que você tenha essas 3 etapas (representando as posições conforme atualizadas em cada loop do jogo):
playerWorldPosition = 50, 100; objectWorldPosition = 60, 200;
playerWorldPosition = 55, 110; objectWorldPosition = 60, 160;
playerWorldPosition = 60, 120; objectWorldPosition = 60, 120;
(como x, y em cada caso)
Como você pode ver, o jogador está voando ou pulando e se movendo levemente para a direita, enquanto o objeto (pode ser um powerup) está caindo diretamente. O jogador pega o poder. Agora, como você desenha essa tela?
Primeiro, vamos supor que você queira o seu player no centro da tela o tempo todo. Portanto, a visualização é bloqueada para o player - essa é a abordagem mais simples de visualizar. A posição do seu jogador será sempre
screenCentre
(iescreenWidth/2, screenHeight/2
). Como você consegue a posição na tela de outros objetos no mundo?Você pode ver que essa fórmula funciona mesmo para o jogador real, pois
(playerWorldPosition- playerWorldPosition) + screenCentre
é igual ascreenCentre
. Portanto, você pode aplicar a mesma fórmula a cada entidade do seu jogo, percorrendo uma lista. Você pode usar essa abordagem simples para desenvolver outras coisas (como atraso na câmera, casos em que você está no canto de um nível etc.)fonte