Em jogos como a história da cidade ou a fazenda, como eles implementam a rolagem?
Para fazer rolagem usando o UIScrollView, o tamanho do EAGLView deve ser maior. Nesses jogos, o tamanho do EAGLView parece mais do que 1024 * 1024. Mas há limitações no tamanho da janela de exibição nos dispositivos iphone (no 3G iphone max é 1024).
Eu joguei esses jogos no iPhone 3G eles estão funcionando bem.
Alguma idéia de como eles implementaram seu mecanismo de rolagem?
Um scroller é bastante simples, uma "viewport virtual" que empurra novos blocos / objetos na direção em que você está rolando.
Um exemplo simples para ver isso é criar uma marca de seleção simples de 1 linha (textoscroller).
Vamos, por exemplo, dizer que temos uma linha com 20 caracteres / letras / caracteres.
Nós os colocamos em uma string / array como:
Agora, se imprimirmos isso, veremos apenas os "pontos".
Agora, para rolar, precisamos fazer os pontos irem para a esquerda. Para que possamos ler o texto chegando.
Para que isso aconteça, removemos a primeira letra da esquerda e adicionamos a próxima a ser mostrada da direita.
então dizemos:
para levar a 2ª letra e encaminhar, o que é igual ao restante do visor de conteúdo atual.
Agora, a janela de visualização tem 1 caractere / letra para restringir, portanto, precisamos adicionar o próximo caractere do scroller. Portanto, precisamos de uma variável para controlar onde estamos no texto de rolagem.
Agora, com este índice, podemos encontrar o próximo caractere.
Em seguida, adicione isso à viewport.
E aumente sua posição no texto de rolagem.
Agora, rolamos o conteúdo 1 caractere restante.
Continue fazendo isso repetidamente, e parecerá que o "Hello World" está rolando pela sua janela de visualização.
Agora imagine esse truque em todas as direções. Em vez de caracteres, você usa seus próprios "ladrilhos". Em segundo lugar, para facilitar o processo, você também adiciona uma "rolagem de pixels" dentro do seu rolador ou apenas multiplica seus scrollpos para simplificar. Então, quando você precisar descobrir qual bloco adicionar em seguida, divida seus scrollpos atuais com a largura do bloco e saberá se precisa mover o conteúdo da rolagem da viewport em qualquer direção.
se você precisar rolar matrizes (com dados de bloco / bloco), poderá fazê-lo com simples for-loops.
rolagem esquerda
Ufa
Essa foi uma longa explicação. Você entende meu argumento aqui ou precisa de mais explicações?
fonte
Rolagem não significa necessariamente carregar tudo na memória. A maneira usual de lidar com isso é separar seu conteúdo em blocos que são carregados na memória conforme necessário. A Apple tem um exemplo em http://developer.apple.com/library/ios/#samplecode/ScrollViewSuite/Introduction/Intro.html para mostrar imagens grandes.
Jogos, no entanto, tendem a fazer outra coisa. Mesmo que seja possível usar a técnica anterior, o carregamento de dados do disco é lento e pode atrapalhar a experiência do jogo para o usuário. Por esse motivo, a área a ser rolada geralmente é cortada em pedaços que você pode reutilizar mais tarde, dando a sensação de que o mundo inteiro é maior do que realmente poderia caber na memória.
Você pode aprender mais sobre blocos com um editor de mapas como o Tiled Map Editor e pesquisar na rede por tutoriais sobre como usá-lo / integrar em seu jogo. Jogos como Diablo são conhecidos por usar mapas lado a lado, que são logicamente divididos em peças maiores, coladas juntas, criando imensos mapas pseudo-aleatórios em cada jogo diferente.
fonte
Outra maneira de implementar a rolagem para um jogo 2D é manipular sua matriz de projeção para refletir onde a tela / câmera está localizada no mundo do jogo.
O que eu fiz foi implementar uma classe de câmera 2D que tinha sua posição e a largura / altura da área visível. Então, antes de desenhar o mundo do jogo, você configura a matriz de projeção orto.
por exemplo
Eu espero que isso ajude. Ah, e você redefiniria a matriz de projeção para outra coisa se desejasse desenhar os elementos da interface do usuário posteriormente etc.
Obviamente, tudo isso se aplica apenas se você estiver escrevendo seu jogo em openGL.
fonte
consulte este tutorial: - http://www.raywenderlich.com/2343/how-to-drag-and-drop-sprites-with-cocos2d
este tutorial contém como rolar a visualização e com o uipanrecogniser.
isso vai ajudar.
fonte