Hola Comunidad ;D
Me registré hace unos días porque volví a adentrarme en el Game Maker después de dos años jeje y ahora soy más completo XD
Bueno, mi problema es que... En un menú de inicio que he creado, puse un objeto y quise que este se moviése aleatoriamente de izquierda a derecha (no logro que lo haga cuando se le de la gana xD), el problema es que no se como hacer que cambie el sproite al moverse hacia el otro lado, no sé si me explico xD.
Si este objeto se mueve hacia allá ->, tiene su sprite original. Pero como aleatoriamente también se mueve hacia allá <- no se como hacer que cambie su sprite por otro que hice con esa orientación.
Si me pudiesen ayudar con este problemilla porfa.
Gracias, saludos :)
Acá te dejo un código, ponelo en el evento Step:
[gml]
if (xprevious > x) { //Si la posición X anterior es mayor que la nueva posición en X...
sprite_index(sprLeft); //...cambiamos el sprite por uno orientado a la izquierda.
} else if (xprevious < x) { //En cambio si X previous es menor que la posición actual de X...
sprite_index(sprRight); //...cambiamos el sprite por uno orientado a la derecha.
}[/gml]
Cualquier cosa comentá.
Hola, gracias por responder :D
Buenop ems, cambié el código por el nombre de mi sprite (dentor del paréntesis cierto? ajaja)
Pero al testear me sale este código en el reporte de errores:
CitarIn object perro_main_menu, event Step, action 1 at line 2: Unknown function or script: sprite_index
Que pudo ser eso?
Prueba los comandos que te obsequio Iros por sierto muy explicable .
Hazlo en una room aparte o en un proyecto nuevo para que lo entinedas mejor .
Gracais Iros .. :)
Error mio, no era entre paréntesis si no =:
[gml]
if (xprevious > x) { //Si la posición X anterior es mayor que la nueva posición en X...
sprite_index = sprLeft; //...cambiamos el sprite por uno orientado a la izquierda.
} else if (xprevious < x) { //En cambio si X previous es menor que la posición actual de X...
sprite_index = sprRight; //...cambiamos el sprite por uno orientado a la derecha.
}
[/gml]
Iros no todo puede ir en bandeja de plata.
Por cierto yo vi el error pero no le quize comentar estaba bien por que asi uno pone mas atention..a lo que esta haciendo .ademas ese codigo es el que mas se usa.
Gracias
Gracias Iros, me ayudaste un montón :D y pués, errar es de humanos ;)
Solo que me si se mueve hacia el otro lado estando en posición < x igual sigue con el mismo sprite XD, pero ahí me fijo como arreglarlo, reitero, muchas gracias ;D
También podría servir este:
Step:
switch (direction div 90)
{
case 0: sprite_index=spr_right; break; //R
case 1: sprite_index=spr_up; break; //U
case 2: sprite_index=spr_left; break; //L
case 3: sprite_index=spr_down; break; //D
}
y en draw:
if xprevious=x && yprevious=y
draw_sprite(sprite_index,0,x,y);
else
draw_sprite(sprite_index,-1,x,y);
Al parecer eso solo funcionaba si el objeto se encontraba en el lado derecho, pero si estaba en ese lado moviéndose a la izquierda no cambiaría el sprite.
Probaré con tu código LowHertz, muchas gracias ;)
Por otra parte, intentaba crear mi propio código pero no veo que funcione:
Citarif vspeed = 2 {
sprite_index = animDER; }
else if vspeed = -2 {
{ sprite_index = animIZQ; } }
Eso lo puse en step, y en Create he colocado que se mueva en dirección izquierda y derecha con velocidad dos y sería todo, sin embargo, no cambia el sprite por el que quiero, en que estaría fallando?
Busca en la ayuda la funcion vspeed y te vas a dar cuenta del error
Vaya.... No sabía que existía hspeed XD XD
Muchas gracias geminis.
TEMA SOLUCIONADO
Gracias a todos ;)