Hola makeros como andan epero que bien!
como puedo lograr hacer esto que
cuando salte que haga zoon la camara no al jugador si no a la pantalla para que se vea mas espacio en la room y que cuando caiga de nuevo al suelo que vuelva a la view actual
dejo unas capturas
en la view 1 se ven 3 bloques
en la view 2 com hace el zoom se ven 4
Gracias makeros XD XD
Alterando xview e yview podras hacer efectos de zoom:
Por ejemplo:
if(place_meeting(x,y+1,Plataforma)){
view_xview[0]=50
view_yview[0]=50
}
else{
view_xview[0]=100
view_yview[0]=100
}
Hola Marth !! Lo probe en step del player pero no veo nada de efecto al colisionar.
Gracias
Cita de: Marth en Septiembre 14, 2015, 06:17:28 PM
Alterando xview e yview podras hacer efectos de zoom:
1. Creo que has confundido las variables. view_xview y view_yview controlan la posición de la vista, no el grado de zoom.
2. Si en código anterior se sustituyen view_xview y view_yview por las variables correctas, que son view_wview y view_hview, el efecto de zoom va a ser muy brusco, porque en un solo step va a cambiar de un grado de zoom a otro. Debería usarse una función como lerp para hacer un zoom gradual, tanto al saltar como al volver al piso.
3. Para que haya alejamiento, las variables wview y hview tienen que ser mayores al ancho y alto del view port, y para que el efecto se vea, la vista tiene que estar activa, ya sea por código o en la configuración de vistas en el editor de rooms
http://docs.yoyogames.com/source/dadiospice/002_reference/windows%20and%20views/views/index.html
Hacer el efecto zoom es la parte sencilla, el verdadero problema sería determinar el momento en que se aplica.
Por ejemplo, se podría revisar la distancia con el piso y hacer que esa distancia sea proporcional al zoom (o a las dimensiones de la view). Si saltas hacia una plataforma más elevada la distancia cambia bruscamente, entonces es necesario usar una función de interpolación para que el zoom cambie lentamente, como mencionó penumbra. Si saltas hacia un precipicio, es posible que no haya piso, o que el piso esté muy abajo, entonces hay que determinar un límite para la distancia a la que se va a buscar el piso, de lo contrario el zoom sería exagerado y los objetos se verían extremadamente pequeños.
Otra opción sería calcular el zoom de acuerdo a la velocidad vertical del personaje, en este caso también se necesita limitar el zoom cuando la velocidad es muy grande, y usar interpolación para que el zoom cambie gradualmente.
Después muestro unos códigos.
Tal vez a eams1986 le sirve un zoom que se aleje y luego se acerque pero cuya magnitud sea siempre la misma, es decir, que no dependa de la altura que salta el personaje. En ese caso el problema principal es cambiar en forma paulatina los valores del wview y hview, como dicen penumbra y Clamud; creo que un cambio que siga la forma de una curva sinusoidal sería estéticamente el mejor. Si prefieres que el cambio sea mediante una interpolación lineal, recomiendo encarecidamente que dispongas en tu juego de un método genérico para cambiar el valor de una variable en forma paulatina, a modo de script. No sólo ayudaría para lo del zoom sino que tiene un gran potencial para crear otros efectos, como el cambio paulatino de canal alfa, escala, rotación, posición, etc. o de una variable cualquiera entre 2 valores dados sin necesidad de programarlos caso por caso (al menos a mí me ha ayudado al punto de ser casi indispensable).
Si lo que busco es parecido a mario bros wii que cuando el salta la pantalla como que se aleja.
y el movimiento de la view es suave.. XD XD
Gracias
Prueba agregando esto a tu código del personaje:
evento Create:
tsalto=round(2*vsalto/gravity);//tiempo de un salto, vsalto es el módulo de la velocidad con que salta; gravity es la gravedad
z=0.2;//grado de zoom (0=100%, 1=200%, etc.)
zoom=false;//indica si se está haciendo zoom
vw=view_width[0];
vh=view_height[0];
evento alarm[0]:
zoom=false;//termina el zoom
view_wview[0]=vw;
view_hview[0]=vh;
evento step:
if zoom
{
view_wview[0]=vw*(1+z*sin(pi*(t/tsalto)));
view_hview[0]=vh*(1+z*sin(pi*(t/tsalto)));
t+=1;
}
evento de salto (puede ser key press vk_up o lo que sea):
salto=true;
t=0;
alarm[0]=tsalto;
El engine del movimiento del personaje lo defines tú.
EDIT: dejo por si las dudas un editable con lo mismo.
Gracias de nuevo Guacusio lo voy a dar un vistazo.
No mas llegue a casa .