Il modo migliore per zoom e pan 2D cocos2d gioco iphone
-
30-09-2019 - |
Domanda
Qual è il modo migliore per attuare una mappa di gioco stradale pan-grado con Cocos2d per iPhone. Sarebbe come Safari Mobile se non con una mappa di gioco che non si adatta completamente sullo schermo. O come come si fa con Angry Birds, Cut the Rope, ecc.
Questo non sarebbe un gioco a scorrimento laterale, solo una zona di gioco fisso che si può ingrandire / fuori.
Sono nuovo quindi se ci sono tutorial per questo che sarebbe grande.
Grazie
Soluzione
ma io ll consiglio sovrascrittura della funzione VISITA del vostro livello da Scala, e gestire la Scaling da una glOrthof o glScalef
Non vorrei sovrascrivere la funzione di visita ... basta aggiungere il livello al tatto dispatcher:
[[CCTouchDispatcher sharedDispatcher] addStandardDelegate:self priority:0];
e implementare le funzioni delegate:
- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
all'interno queste funzioni se si nota che l'utente effettua una scansione panoramica / zoom, basta aggiornare la posizione scena / proprietà scala.
Per trovare se l'utente effettua una scansione panoramica o lo zoom, controllare questa classe helper InputController qui: https://github.com / caxaria / LoopingMenu
Speranza che aiuta,
Altri suggerimenti
È assolutamente dovrebbe non seguire il consiglio di Joao Caxaria, che sembra aver inutilmente reimplementato l'intera API UIGestureRecognizer se stesso!
Si può semplicemente utilizzare disponibili sistemi di riconoscimento gesto di UIKit e di collegarli a openGLView del sharedDirector, come specificato nella risposta scelta nel link qui sotto. Questi permettono di pan, pinch, toccare ecc rilevazione. È anche possibile utilizzare un UILongPressGestureRecognizer per rilevare il trascinamento.
se non si ha intenzione di utilizzare la fisica nel vostro gioco, quindi è molto semplice troverete un sacco di tutorial su zoom / pan, è sufficiente impostare la vostra scala mondiale nella touchesMoved zoom / pan codice.
, ma se si sta andando per Angry Uccello come roba, quindi è possibile utilizzare il motore fisico Box2d / Chipmunk (viene fornito con cocos2d), ma per la costruzione del mondo della fisica come Angry Birds si sia necessario scrivere il proprio editor di livelli o è possibile utilizzare LevelSVG (da cocos2d persone) kindof cosa visivamente rendere il mondo in editor di SVG e analizzarlo a Box2D.
Per quanto riguarda la Zoom / padella con corpi fisica nel vostro mondo, funzionerà fino a quando il mondo della fisica è nel vostro LAYER cui si sta tentando di scalare.
ma io ll consiglio sovrascrittura della funzione VISITA del vostro livello da Scala, e gestire la Scaling da una glOrthof o glScalef