2010-10-15 14 views
5

¿Cuál es la mejor manera de implementar un mapa de juego zoomable pan-able con Cocos2d para iPhone. Sería como Mobile Safari, excepto con un mapa del juego que no se ajusta completamente a la pantalla. O como se hace con Angry Birds, corta la cuerda, etc.La mejor forma de acercar y alejar un juego 2D de iphone cocos2d

Esto no sería un juego de desplazamiento lateral, solo un área de juego fija que puedes acercar o alejar.

Soy nuevo, así que si hay tutoriales para esto sería genial.

Gracias

Respuesta

1

pero i ll recomiendo sobrescribir la función de VISITA de la capa que desea escalar y controlan el escalado por cualquiera glOrthof o glScalef

yo no sobrescribir la función de visita ... simplemente añada su capa al despachador de contacto:

[[CCTouchDispatcher sharedDispatcher] addStandardDelegate:self priority:0]; 

y poner en práctica las funciones de delegado:

- (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; 

dentro de esto funciona si nota que el usuario está paneo/zoom, simplemente actualizar las propiedades de posición/escala de la escena.

Para saber si el usuario está paneo o zoom, marque esta clase de ayuda InputController aquí: https://github.com/caxaria/LoopingMenu

creo que sirve,

4

si no va a utilizar la física en su juego, entonces es muy simple, con una gran cantidad de tutoriales sobre el zoom/pan, acaba de establecer su escala mundial en el código touchesMoved zoom/pan.

pero si vas por cosas como Angry Bird, entonces puedes usar el motor de física Box2d/Chipmunk (viene con cocos2d), pero para construir el mundo de la física como Angry birds deberás escribir tu propio editor de niveles o puede usar LevelSVG (por gente de Cocos2d) para crear visualmente el mundo en el editor SVG y Parse en BOX2d.

En cuanto al zoom/pan con cuerpos de física en su mundo, funcionará mientras su mundo de Física esté en su CAPA que está tratando de ESCALAR.

pero i ll recomiendo sobrescribir la función de VISITA de la capa desea modificar la escala, y controlan el escalado por cualquiera glOrthof o glScalef

6

A pesar de todo debe no seguir el consejo de Joao Caxaria, que parece ¡ha vuelto a implementar innecesariamente toda la API de UIGestureRecognizer!

Puede simplemente usar los reconocedores de gestos disponibles de UIKit y adjuntarlos a openGLView de sharedDirector, como se especifica en la respuesta elegida en el siguiente enlace. Estos permiten la detección de pan, pellizco, golpecito, etc. Incluso puede usar un UILongPressGestureRecognizer para detectar el arrastre.

cocos2d-iOS - Gesture recognisers

Cuestiones relacionadas