(http://i41.tinypic.com/x3er9c.png)
Empiezo con una im?gen ;D
C?mo puedo hacer que la view siga a mi personaje pero que se mueva por "bloques"?
En el dibujo no me esforc? mucho pero lo que quiero hacer es ahorrar rooms usando este sistema donde va a dar la sensacion de que es otra c?mara.
Lo que yo intent? fu? hacer "si la X del objeto (personaje) es mayor al de la view, la view se corre X(ancho de la view) hacia la derecha" y lo mismo con el eje Y, pero lo que pasa es que toma los valores de 0.0 de la view
Por eso quer?a saber si hay alguna variable o algo como para determinar si un objeto est? dentro o fuera de una view(tambien para poder decir que todos los objetos fuera de la view sean desactivados para ahorrar recursos y los de dentro sean los activos.
ahora mismo se me ocurre que coloques un objeto invisible al final de cada room, y cuando el personaje lo toque, le dices a la view, donde tiene que mirar, hasta el proximo objeto
Gracias por responder ;D
Si, pero ser?an muchos objetos...
No hay alguna variable que diga si un objeto est? dentro o fuera de la view?
usa esto: view_width (ancho de una view), view_height (alto de view)
Yo uso :GM8: Lite y esas variables no est?n en la lista...
entonces usa variables globales q contengan el tama?o de las view XD XD XD
pod?s usar varias rooms en vez de views
Ese es el principal objetivo. Mis sprites son tan chicos que tranquilamente puedo hacer 5 o 6 "rooms" con las view y ahorrarme rooms, y todo el c?digo que llevar?a hacer el ubicar al personaje correctamente (sale por la derecha de la 1? room y entra en la 2? room por izquierda.
Gracias por responder ;D
No se si te entendi, mira el ejemplo XD XD XD
No entendiste nada XD
En mi juego hay una unica view, que ocupa toda la pantalla.
Que se mueve por "bloques" como Zelda de la NES.(reci?n me acuerdo de este juego)
Lo que yo quiero es que la view no se "mueva" hasta el siguiente bloque, sino que sea instantaneo.
Gracias por el ejemplo aunque no me sirvi? XD ;D
Lo q quieres hacer es q la ?nica view siga al personaje principal y cuando este atraviese un bloke enfoque al protagonista y el bloque???...espero q te hay entendido cuando tenga algo listo lo subo XD XD XD
En realidad es muy sencillo, lo consegu? con 2 l?neas de c?digo =P.
Adjunto ejemplo.
Si te interesa saber c?mo funciona y no lo entend?s, decime que te explico.
Eso es! XD
Aunque son dos lineas de codigo "sencillas" no entiendo.
No soy un gran programador...(por eso eleg? :GM8:)
Espero tu explicaci?n con ansias
Gracias! ;D
Las l?neas m?gicas son estas:
view_xview[0]=x-(x mod view_wview[0]);
view_yview[0]=y-(y mod view_hview[0]);
Las otras dos son para que el objeto se mueva con las flechas y no salga del room.
Mir?, mod devuelve el resto de una divisi?n entera, o en otras palabras, resta al primer factor el segundo hasta que el primero sea menor que el segundo.
Unos ejemplos:
7 mod 2=1 (7/2=3 y resta 1 ? 7-2=5, 5-2=3, 3-2=1, 1<2, no se resta m?s).
7 mod 3=1 (7/3=2 y resta 1 ? 7-3=4, 4-3=1, 1<3, no se resta m?s).
7 mod 4=3 (7/4=1 y resta 3 ? 7-4=3, 3<4, no se resta m?s).
7 mod 5=2 (7/5=1 y resta 2 ? 7-5=2, 2<5, no se resta m?s).
En el c?digo, hago x mod view_wview[0]. Eso b?sicamente devuelve cu?nto le sobra a x para ser divisible entre view_wview[0] (el ancho de la view, en este caso 160). Despu?s, este valor lo resto a x, y as? x queda redondeado hacia abajo en un valor divisible entre 160 (0, 160, 320, etc) y posiciono la coordenada x de la view en ese lugar.
Un ejemplo por si no te qued? claro (no s? si lo expliqu? muy bien XD) :
Supongamos que el peronaje est? en (400,240), y el ancho y alto de la view son 160:
x(400) mod view_wview[0](160)=80 (400/160=2 y resta 80 ? 400-160=240, 240-160=80, 80<160, no se resta m?s).
x(400)-80=320, view_xview[0] se posiciona en 320 (que es 160*2, o sea el ancho de la view*2).
Despu?s:
y(240) mod view_hview[0](160)=80 (240/160=2 y resta 80 ? 240-160=80, 80<160, no se resta m?s).
y(240)-80=160, view_yview[0] se posiciona en 160 (que es el alto de la view).
Por cierto, si el valor de x e y fuera m?s bajo que 160, el resultado ser?a 0, y la view se posicionar?a en la esquina superior izquierda.
Espero que hayas entendido ;).
En otras palabras...(las m?as ;D)
Desde la posici?n del personaje (x=400), se cuenta cuantas view entran hasta 0 (divisores de 160) y lo que sobra (80) se lo resto a la posici?n del personaje (80-400). Eso me d? siempre un n?mero divisor del ancho de la view.(0,160,320,480,640)
Lo mismo para "y".
Entend? bien? ;) pas? de grado? :D
(Odio las matematicas >:(, pero las necesito XD)
Si, pasaste, felicidades XD.