Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: towers en Abril 07, 2019, 03:02:38 PM

Título: Sprites de nave al virar verticalmente.
Publicado por: towers en Abril 07, 2019, 03:02:38 PM
Hola soy nuevo!

Estoy haciendo un Shot Em Up horizontal y algo me tiene atascado. No consigo hacer el movimiento de la nave que el sprite cambie ligeramente la inclinacion de la nave cuando sube y lo mismo cuando baje, y claro se quede en su estado normal si esta sin moverse.

El sprite_index en Step no me cambia nada, lo mas cercano que he conseguido es draw_image en Dibujar pero no desaparece el sprite original se pone solo encima.
Estoy muy perdido en este tema. Gracias.
Título: Re:Sprites de nave al virar verticalmente.
Publicado por: Clamud en Abril 07, 2019, 03:13:28 PM
Bien, primero quiero entneder la organización del juego.
Estás usando 3 sprites para la nave, uno para cada inclinación.
¿Qué código tienes en el evento Draw?
Título: Re:Sprites de nave al virar verticalmente.
Publicado por: towers en Abril 07, 2019, 03:20:05 PM
si ,en pricipio tendria 3 sprites: normal,  virado al fondo para subir, virado hacia delante para bajar.  ya que el sprite base es animado, si no podria haber echo tres subimagenes. pero no se hacer q la animacion vaya de tal subimagen a otra.

Te hago solo hacia abajo

if (numVY >= 0.1)
{
draw_sprite(sprite,-1,x+146,y-12)
}

con esta opcion si hago q desaparezca el sprite de atras me vale.
por otra parte:

en Step

he intentado esto:

if (numVY >= 0.1)
{
sprite_index = playerdown
}
else
{
sprite_index = player1
}

pero no sale
Título: Re:Sprites de nave al virar verticalmente.
Publicado por: Clamud en Abril 07, 2019, 06:10:11 PM
Escribí un ejemplo y quedó un poco más complicado de lo que esperaba.
En el evento Create define la variable inclinacion, que después podría servir para asignar el ángulo de movimiento de las balas.
[gml]
inclinacion = 0; //angulo de inclinacion
[/gml]
Crea un script "approach" para cambiar gradualmente el valor de inclinación. El script es útil en muchas situaciones
[gml]
/// scApproach(valor, meta, incr);
//if( valor < meta )return min( valor + incr, meta );
//if( valor > meta )return max( valor - incr, meta );
if (argument0 < argument1) return min(argument0 + argument2, argument1);
if (argument0 > argument1) return max(argument0 - argument2, argument1);
return argument0;
[/gml]
En el evento Step cambia la inclinación y asigna el sprite
[gml]
kU = keyboard_check(vk_up); //tecla arriba
kD = keyboard_check(vk_down); //tecla abajo

//si no se presionan las teclas, regresar a posicion horizontal
if (!kU and !kD) inclinacion = scApproach(inclinacion, 0, 3);

//si se presiona arriba o abajo, inclinar
if (kU) inclinacion = scApproach(inclinacion, 15, 3);
if (kD) inclinacion = scApproach(inclinacion, -15, 3);

//asignar sprite
if (inclinacion == 0) {
    sprite_index = spShip;
}
else if (inclinacion > 0) {
    sprite_index = spShipUp;
    image_index = inclinacion / 15;
}
else if (inclinacion < 0) {
    sprite_index = spShipDown;
    image_index = abs(inclinacion / 15);
}
[/gml]
Probé con estos sprites
(https://raw.githubusercontent.com/Glioce/GMLive_examples/master/spaceship0/spShip.png)
(https://raw.githubusercontent.com/Glioce/GMLive_examples/master/spaceship0/spShipUp.png)
(https://raw.githubusercontent.com/Glioce/GMLive_examples/master/spaceship0/spShipDown.png)
Puedes ver el código completo aquí: GMLive (https://yal.cc/r/gml/?mode=2d&tabs_lz=NobwRAdghgtgpmAXGA6nANgYwPbwApQDmCANGDgCYLID0NABAMJQBOhr9AzgA4sCWAFzicAOixEQeAZQAWfbvQC8XXoLgB9KBQoAKMRPqH6IsDIEDunRHRZQA7gDpCgmQFcARq85wWOCEP8HHBgaAHF0PmxMODCAWQAZPgA3DTgAD1hudGEaGChOIRYaHihozjluAAZi7ll5B24IQhMSfQgjegBGEnoBFlc4HoAzKHRvHoBmACZJqbaASgBuNukKgFUFZR5+IU1tPXF2oxMzCysbeycXDy8fPwCBINwwiKiY0ITk1IyYLJy8go+GqlYQVaqreQbBpNFptDoTHp9AbDUbjejTWYLZaHCHcAAi2Ds7S2ql2Wl0cOOpnMlmsNFsjmcAjcnm8vmw-jggWCL0i0TiiRS6nSmWynFy+UKwLKYJqdXxhIg0OaYFah3hiP6g3oIzG2ox6LmhyWbTadCYLDgUCEbT4EEwEWgmEixPolUW9DoUCarnQ2HoVHododdtKLpWpI0dqoaSUKnl2IkseUnUq7raAE846n04d3KUANaEFjYVwQCjqHB+lhxzDqdzoQuJiBtADEVCGdrgXEwAEFuLxsKUZGbzZw+wOS8OdElRtgWD14AIoD1gywTYc6Hwhjp6LPq-QADz0JdQejzS0CVwsdowO27-fz+gAaiD9oXJ7gy-Pza3O73c41gAfJ+34Xl+163lAaQPoB9AALRvpgH6nj+tpDPQOisIQrjwP4lRHvQ2G4VyAidPM9CXpBJ73sReECARr50aRMxEWwJH+ORzbbphzH4fQIF8WRFFUTeJ7QVh7H0QRiFCaxQlcW0ontEJuYSG2HZdlwQgKHQACiKT+P6Ug6W0BZrHGBZwBm7hDiwFaYDIcCYAWM4FuorjcEsno0EIDpnqw-D5mZeKWdZtmsA5TkuW56gUIq3l0H5jZEfmABW2BmfEYU2XZUXOa5STudkQwCIlvnOSlfAAF4AI6uHwPgUFAZkAEo5RF9mVtFhXufwhBmOVyVnlQlqOS1hxtEkyaYQW7WIQW8QUQAVPQAAsHp0CkfrOs1FD0DI841Ryy7oFNWbKDoBahQtawretm00NtUR8Hte4+AIfCYKMpqHLGz7KNNj1UDwjbVawmYvoDGbNqOnB8PQED+t49C8MILrevQjacL0lX5D0lrFsIHBntw2Dw86HIHUd1UnT9hw8ToACE5lEeW9As3iFHBo6YZU1sE6DtOPOhpTEA9JUkwbupm7FAjKNo-DHIBSwQVnv6UDpdgq72rz4gMxhV13UhvNi3G479kLjk6CLTouj0nQAKxS9xhvXdzuuiy65uC1O1u23z4sIU7Lu-RIXrw4Q0A1tsajoZhAdm4oyiVBRICUoYse7NG6Tm7UFTNgAvm0GAo4zifeyBqf0On6pGFnUblrnJLyhszYdHweTEOoOczRXVMME7Rcl3qQaG-37THtXtcGPXkY903M24gSRLt0YndEI3MZxprnA257dsD10jvSxAxeTYc7ZwJ2EDdhQDI+QZpH+niDJtPf9jqEIaQCDoqYO5LE2XsOSnw-nYdQ3h0A7lPmAQuABdIAA)
Título: Re:Sprites de nave al virar verticalmente.
Publicado por: towers en Abril 07, 2019, 09:52:36 PM
gracias por la info, pero lo mio es mas sencillo. y me he dado cuenta que el sprite_index haga lo q haga no me funciona con nada. no se q tengo en mi codigo o como van los sprite_index pero no puedo cambIar sprites. Mi base es el tutorial de Monty Drake y no se si tiene algo que me perjudica.
Título: Re:Sprites de nave al virar verticalmente.
Publicado por: somnus en Abril 08, 2019, 05:47:40 AM
1.- si tu objeto tiene animacion entonces no importa que sprite index tengas siempre correra la animacion.

2.- verifica si en el objeto o parents hay algo que este definiendo el valor del sprite index, de ser asi ese codigo no te permitira cambiar el sprite index.

3.- si hay otros objetos con los que interactuas, verifica que si en estos hay algun codigo que no te deja cambiar el sprite index,

sl sprite index de que funciona... funciona, aqui lo que veo es que seguiste un tutorial y no sabes como entender todo el codigo.

tu juego es asi como este? https://www.youtube.com/watch?v=-Fd1fmCSutI&t=1s

si te fijas la nave tiene solo 3 sprites, para mover arriba, cuando no se mueve y cuando va para abajo.
Título: Re:Sprites de nave al virar verticalmente.
Publicado por: towers en Abril 08, 2019, 10:01:27 PM
Ahora nos vamos entendiendo. si que tiene animacion mi sprite. y no quiero perderla y ademas hacer cambio de sprite, no se puede de ninguna forma las dos cosas?
Título: Re:Sprites de nave al virar verticalmente.
Publicado por: towers en Abril 08, 2019, 10:25:31 PM
pues no, por las pruebas que voy haciendo solo te deja hacer un Sprite_index por objeto No?
Título: Re:Sprites de nave al virar verticalmente.
Publicado por: somnus en Abril 08, 2019, 11:28:45 PM
y para que quieres 2 o mas objetos, con 1 es suficiente o al menos es como todos lo hacemos, creo que el problema para poderte ayudar, primero es de comunicacion.