Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Sr.Mojon en Octubre 13, 2018, 09:28:08 PM

Título: dibujar movimiento
Publicado por: Sr.Mojon en Octubre 13, 2018, 09:28:08 PM
hola, ¿como se hace que cuando se cree un objeto que el sprite tenga una animacion que se mueva como flotando???
Título: Re:dibujar movimiento
Publicado por: HKaichim en Octubre 13, 2018, 09:41:08 PM
Cita de: Sr.Mojon en Octubre 13, 2018, 09:28:08 PM
hola, ¿como se hace que cuando se cree un objeto que el sprite tenga una animacion que se mueva como flotando???
No entendi bien que necesitas, pero con crear un Sprite y la animacion del moverse a cierta distancia de arriba hacia abajo bastaria...
Título: Re:dibujar movimiento
Publicado por: 3dgeminis en Octubre 13, 2018, 10:59:43 PM
Usando image_speed mayor a 0 deberia reproducirse la animacion.
Usas algun evento DRAW ? dibujas el sprite usando draw_sprite ?
Título: Re:dibujar movimiento
Publicado por: Sr.Mojon en Octubre 14, 2018, 12:20:27 AM
si lo dibujo con draw_sprite eso es para que dependiendo del tiempo que le quede al objeto se iba desapareciendo poco a poco
Título: Re:dibujar movimiento
Publicado por: 3dgeminis en Octubre 14, 2018, 05:22:13 AM
En draw_sprite(sprite,subimg,x,y) que valor pones en subimg ? deberia se -1 o all
Título: Re:dibujar movimiento
Publicado por: Sr.Mojon en Octubre 14, 2018, 04:48:10 PM
0 es el valor que pongo
Título: Re:dibujar movimiento
Publicado por: BssString en Octubre 14, 2018, 07:25:08 PM
Hola Sr.Mojon

Si quieres crear un efecto de oscilación, lo mejor es usar las funciones trigonométricas, sugiero la función seno.

Creation Event
angle = 0

Step Event
angle +=4 //Esta es la velocidad, puedes usar un número más alto para que vaya más rápido
if angle >=360 angle -= 360


Draw Event
var cap = 16 //La cantidad máxima de pixeles que baja y sube
var y_offset = cap*dsin(angle)
draw_sprite(tu_sprite,la_sub_imagen,la_x,y_offset+la_y)


Eso hará que el sprite se mueva hacia arriba y abajo en un movimiento oscilante (con rango -cap;+cap en pixeles, para este ejemplo -16, +16 pixeles)
Puedes dibujar una sombra fija a nivel del suelo para que de una mejor sensación de que el objeto está flotando.

En GM8 no existe la función dsin(), en reemplazo debes usar: sin(degtorad(angle))

Si no es eso lo que necesitas, ignora este mensaje xD

Saludos
Título: Re:dibujar movimiento
Publicado por: Sr.Mojon en Octubre 14, 2018, 07:29:36 PM
me sale un error

var cap = 16 //La cantidad máxima de pixeles que baja y sube
var y_offset = cap*dsin(angle)  --------- aqui
draw_sprite(tu_sprite,la_sub_imagen,la_x,y_offset+la_y)
Título: Re:dibujar movimiento
Publicado por: BssString en Octubre 14, 2018, 07:30:56 PM
Hola Sr.Mojon

Qué error sale?
Título: Re:dibujar movimiento
Publicado por: Sr.Mojon en Octubre 14, 2018, 07:31:32 PM
unknown funtion or script: dsin
Título: Re:dibujar movimiento
Publicado por: BssString en Octubre 14, 2018, 07:32:39 PM
Hola Sr.Mojon

Es por tu versión de Game Maker entonces, dsin está disponible desde GMS 1.4 en adelante.

Usa la función de GM8.

Saludos
Título: Re:dibujar movimiento
Publicado por: Sr.Mojon en Octubre 14, 2018, 07:37:07 PM
se que es estúpido pero como hago la sombra para que parezca que flota??  XD
Título: Re:dibujar movimiento
Publicado por: BssString en Octubre 14, 2018, 07:50:15 PM
Hola Sr.Mojon

Puedes simplemente dibujar un círculo negro.
draw_ellipse(x1,y1,x2,y2,false)

O algo más elaborado puede ser dibujar el mismo sprite pero aplastado.
draw_sprite_ext(sprite_index,image_index,x,y+sprite_height+cap,1,0.2,0,c_black,1)

Eso dibujará el sprite con una escala en Y del 20% de su tamaño original.

Puedes incluso reducir e incrementar la escala de la sombra a medida que el objeto suba o baje para causar un efecto de altura.

Saludos cordiales
Título: Re:dibujar movimiento
Publicado por: 3dgeminis en Octubre 14, 2018, 07:56:34 PM
Si pones 0 en subimg solo se mostrara la primer imagen del sprite, por eso no se reproduce la animacion, pon -1 o la palabra all
Título: Re:dibujar movimiento
Publicado por: Sr.Mojon en Octubre 14, 2018, 07:59:30 PM
BssString en el código lo pongo asi y ya?? porque cuando el juego inicia me da un error en las variables
Título: Re:dibujar movimiento
Publicado por: BssString en Octubre 14, 2018, 08:39:11 PM
Hola Sr.Mojon

Por lo general los códigos no son genéricos ni llegar y copiar, los debes adaptar a tus variables, tus necesidades, tus posiciones, tus velocidades, etc.

Y si no nos comentas el error que te aparece, no podremos saber qué está mal ni cómo ayudarte, intenta especificar mejor el error que te está mostrando Game Maker para identificar el problema y encontrar una solución.

Saludos
Título: Re:dibujar movimiento
Publicado por: Sr.Mojon en Octubre 14, 2018, 08:43:07 PM
lo que pasa es que como yo lo copie y lo puse con las variables de x1,y1,x2,y2 aqui fue donde me salto el error de que no encontraba la variable y2
Título: Re:dibujar movimiento
Publicado por: TheZombie99 en Octubre 15, 2018, 07:05:23 PM
Hola, yo hice que el personaje de mi proyecto flote sólo modificando su posición en y.
Queda así como en la imagen.
Te paso el código?
Título: Re:dibujar movimiento
Publicado por: Sr.Mojon en Octubre 15, 2018, 10:25:37 PM
si men me seria de mucha ayuda


PD:gracias
Título: Re:dibujar movimiento
Publicado por: TheZombie99 en Octubre 17, 2018, 12:56:29 AM
Bueno.

Objeto que va a flotar.

Create


float = false;
sumando = false;
restando = false;
temporizador = 0;
contador = 0;


Step


if (float){
        temporizador++;
        if (temporizador>5){
            temporizador=0;
        }
        //Contador de float
        //Sumando
        if (contadorEstados =0){
            sumando = true;
            restando = false;
        }
        //Restando
        if (contadorEstados =3){
            sumando = false;
            restando = true;
        }
        if (temporizador=5){
            if (sumando){
                contadorEstados++;
                //Flotando
                y--;
            }
            if (restando){
                contadorEstados--;
                //Flotando
                y++;
            }
        }
    }else{
        if (y != ystart){
            y = ystart;
        }
    }


Cuando Float sea verdadero entonces temporizador se empezará a incrementar, cuando sea mayor a 5 volverá a cero y así se repite, cuando el Contador sea cero sumando será verdadero, y cuando sea 3 (que es el límite de altura de 0 a 3 que puse) restando será verdadero.

Si sumando es true, restando es false, y viceversa. Menor es el número de temporizador, mayor será la frecuencia de suma y resta de contador, si es mayor, más lento.

Si temporizador es 5, dependiendo de sumando ó restando, contador cambia, y la coordenada Y también.

Ya cuando no está flotando, si la Y es diferente de donde inició el objeto, entonces que se re posicione.



Título: Re:dibujar movimiento
Publicado por: Sr.Mojon en Octubre 17, 2018, 01:20:35 AM
muchísimas gracias me funciona perfecto