hola, ¿como se hace que cuando se cree un objeto que el sprite tenga una animacion que se mueva como flotando???
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...
Usando image_speed mayor a 0 deberia reproducirse la animacion.
Usas algun evento DRAW ? dibujas el sprite usando draw_sprite ?
si lo dibujo con draw_sprite eso es para que dependiendo del tiempo que le quede al objeto se iba desapareciendo poco a poco
En draw_sprite(sprite,subimg,x,y) que valor pones en subimg ? deberia se -1 o all
0 es el valor que pongo
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
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)
Hola Sr.Mojon
Qué error sale?
unknown funtion or script: dsin
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
se que es estúpido pero como hago la sombra para que parezca que flota?? XD
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
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
BssString en el código lo pongo asi y ya?? porque cuando el juego inicia me da un error en las variables
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
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
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?
si men me seria de mucha ayuda
PD:gracias
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.
muchísimas gracias me funciona perfecto