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:
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