SKCameraNode- Uma abordagem Sólida, Parte — 3

Parte Final 👨🏻‍💻

Relembrando, vimos na primeira postagem, dessa série de 3, aspectos teóricos e como criar SKCameraNode. Também, vimos na segunda postagem como aspectos importantes para a implementação e a implementação do Zoom in/out.

Se essa é a primeira postagem que você está lendo, recomendo que leia as anteriores. E se você leu a primeira e não leu a segunda, recomendo que leia a segunda postagem pois utilizamos parte do código desenvolvido na segunda nessa postagem. Clique aqui para ir para a primeira postagem e clique aqui para ir a segunda.

Tópicos abordados

Nessa postagem vamos abordar outra forma de trabalhar com a SKCameraNode:

  • Implementando Swipe para navegação.

Implementações

Como toda a base para o funcionamento da navegação já esta criada, só nos resta criar lógicas especificas para tornar possível essa ação. De inicio, vamos criar a variável responsável pelo Gesture, iremos chama-lá de swipeNavigation. Também, iremos criar uma função chamada updatePosition que irá servir para atualizar a posicão da câmera na tela a partir dos inputs do swipeNavigation.

SwipeNavigation

Para criar essa variável iremos utilizar o mesmo padrão da GameScene da parte 1. Também, é necessário criar uma variável para saber ultima Localização do toque na tela e isso irá possibilitar com que possamos fazer um cálculo futuro. O trecho de código deve ficar assim:

Agora você deve estar se perguntando: "Por que você tá utilizando LongPress, se a gente vai navegar com swipe? 🤔". A resposta é simples: Se fossemos utilizar o UISwipeGestureRecognizer, devido o seu tratamento com os dados teríamos que criar uma variável para cada tipo de Swipe ( direita, esquerda, cima e baixo). Como o meu intuito é trabalhar um código enxuto e que solucione a problemática, utilizei o UILongPressGestureRecognizer que só precisa de uma variável e vou obter o mesmo resultado com mais eficiência.

UpdatePosition

Essa função será responsável por: receber os valores de input do UILongPressGestureRecognizer, guardar a ultima localização do togue na tela e cálcular um Δx e um Δy. Após isso, a função utiliza outra função implementada na ultimo post . Essa função deve ficar assim:

CenterOnPosition

Para um bom funcionamento dessa função, iremos precisar fazer uma pequena alteração no seus laço de verificação. O mesmo deve ficar assim:

Configurações finais

Após a criação da UpdatePosition e a configuração do CenterOnPosition, é necessário adicionar o novo Gesture da View na função init da classe. A implementação dessa parte deve ficar assim:

All done! sua câmera já está configurada tanto para Navegação por Swipe quanto para Zoom in/out. O resultado deve estar assim:

Resultado final

Conclusão

Nessa sequencia de postagem, estudamos os aspectos gerais utilizados pela SKCameraNode e como utiliza-los de uma forma agradável e sólida. Espero que vocês tenham gostado e continuem seus estudos sobre SpriteKit e tecnologias apple.

O código completo dessa seguencia de postagem pode ser encontrado no repositório:

O link para da Conceitos sobre SKCameraNode (parte 1):

O próximo passo é a implementação do Zoom in/out (parte 2):

Pra finalizar, eu e alguns colegas desenvolvemos um repositório rico em exemplos de utilização de tecnologias Apple para recriação de jogos no mercado. Você pode acessar todo o conteúdo desse repositório no link abaixo:

Referências

“Out of difficulties grow miracles"

— Jean de la Bruyere

--

--

Levy Cristian
Sanbox — Apple Developer Academy (IFCE)

Estudante, desenvolvedor com um pé em design, pesquisador em IOS e ser humano nas horas vagas.