Pergunta sobre rolagem de cima para baixo / lateral!


7

Eu sei que é apenas o pano de fundo que rola e o jogador praticamente permanece centralizado. O que estou querendo saber qual técnica é mais correta quando estou implementando um mapa de rolagem lateral grande (não estou usando blocos como algumas outras perguntas que encontrei).

usando um mapa muito grande, mapa de 16000 pixels e rolando isso. e criar uma lista de imagens, com talvez 4 mapas de 4000 pixels?

Além disso, digamos que eu queira uma caixa em um determinado ponto do meu mapa. No momento, estou apenas contando os pixels que estou rolando e, quando chego ao pixel 2000, insiro a caixa e rolo com o fundo. Isso parece correto? ou existe uma maneira melhor de fazer tudo isso?

Respostas:


4

Se você estiver usando o SpriteBatch:

  • Desenhe tudo ( SpriteBatch.Draw) em seu "espaço mundial"
  • Passe uma matriz de SpriteBatch.Begintradução para traduzir o espaço do mundo para a posição correta (pense nisso como uma câmera).
  • O tamanho máximo da textura no XNA é 2048x2048 no perfil Reach, 4096x4096 para HiDef ( detalhes ). Se a sua textura de fundo for maior, você terá que dividi-la e desenhá-la em partes.
  • Você pode considerar adicionar algumas opções, se encontrar problemas de desempenho.

Você deve fazer todos os seus cálculos de movimento e assim por diante nesse "espaço do mundo". Então essa caixa teria uma posição de algo parecido new Vector2(2000, 0).

Seu jogador também teria um Vector2 position;e provavelmente também algo como um Vector2 velocity. Você então Drawo jogador sprite nessa posição. E também use essa posição para criar sua matriz de câmera.

Para mundos realmente enormes, ou para mecanismos de física que exigem precisão, talvez você precise mexer em refazer o espaço do mundo para manter a precisão ( detalhes ). Imagino que isso provavelmente não se aplique à sua situação.


0

Use uma lista de imagens. (É mais compatível com a memória - embora preste atenção ao coletor de lixo)

A contagem de pixels pode ser boa ou ruim. Depende da complexidade do seu jogo. Pro: - é muito WYSIWYG. - é simples entender o que está acontecendo

Contras: - Seu menor tamanho de passo é um pixel - talvez você queira ser mais preciso com seus controles

Minha sugestão: se o seu jogo for razoavelmente simples, use pixels. Caso contrário, calcule tudo em um espaço contínuo.


calcular tudo em um espaço contínuo parece uma boa idéia ... se eu soubesse o que era.
bitbitbot

11
O espaço contínuo é onde você faz a geometria vector ;-) Se você não está muito confortável com álgebra linear, ficar com os pixels (ou ir para khanacademy.org e aprender)
Fabian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.