Octubre 11, 2015, 10:25:14 PM Ultima modificación: Octubre 12, 2015, 03:00:53 AM por KratosSeba
Hola gente bonita!
Había dejado GM de lado hace como un año y ahora creo que estoy retomando mi pequeño proyectito que tuve :3, estuve buscando algún comando que haga algo como esto: if previous_hspeed = -2 { bla bla bla...
Intenté buscar aquí http://www.comunidadgm.org/propuestas-y-soporte/glosario-gml-funciones-constantes-y-sentencias-(en-proceso-de-optimizaci243n)/ (y aprovecho de agradecer a la comunidad por ese tema :3) pero no pude encontrar algo parecido  lo que busco :S
Cómo puedo hacer algo así? Muchas gracias :D
Soy solo otro recién empezado que aspira a tener un juego en la vil tienda Play Store :D

mmm... déjame pensar...
Ya!:  Puedes ir dejando una variable "rastro" que se limite al hspeed antes de ser modificado, por ejemplo:

Evento en el que cambias hspeed:

previus_hspeed = hspeed;
hspeed += nueva_hspeed;


No estoy completamente seguro de que funcione, pero inténtalo a ver si sirve...xD
alaberga regué el café.

BA:STFW&RTFM

#2 Octubre 11, 2015, 10:30:11 PM Ultima modificación: Octubre 11, 2015, 10:31:46 PM por KratosSeba
Vaya, olvidé agregar un detalle o mi pregunta sería muy obvia.
Es que tengo dos sprites que los quiero agregar a una misma velocidad, o sea:
Un perro que estaba caminando hacia la izquierda y se detiene (velocidad 0). Al detenerse se sentará mirando a la izquierda.
Pero también quiero que haga que si estaba caminando a la derecha y se detiene, se sienta con su debido sprite mirando a la derecha.
Lo malo es que para ambos casos la velocidad será 0 pero no sé como pueda diferenciar cuando iba a la derecha o a la izquierda :S
Saludos.


[EDITO] Publiqué esto antes de ver tu mensaje, veré cómo puedo hacerlo con ese código, lo vi a primera vista, gracias por responder :D
Soy solo otro recién empezado que aspira a tener un juego en la vil tienda Play Store :D

A ver...
Cita de: KratosSeba en Octubre 11, 2015, 10:30:11 PM...Un perro que estaba caminando hacia la izquierda y se detiene (velocidad 0). Al detenerse se sentará mirando a la izquierda.
Pero también quiero que haga que si estaba caminando a la derecha y se detiene, se sienta con su debido sprite mirando a la derecha.
Lo malo es que para ambos casos la velocidad será 0 pero no sé como pueda diferenciar cuando iba a la derecha o a la izquierda :S
Saludos...

Si entendí bien, lo que quieres es que cuando el perro pare: Sí iba a la izquierda, cambie el sprite al de perro_izquierda, y si va a la derecha, cambie el sprite al de perro_derecha...¿no?

Si es así, es fácil:

Evento: Perro se queda quieto...xD

if hspeed >0 //Si la velocidad es mayor que cero (valor positivo+, osea: derecha)
sprite_index = perro_derecha; //el sprite se vuelve el del perro mirando a la derecha
if hspeed <0 //Si la velocidad es menor que cero (valor negativo-, osea: izquierda)
sprite_index = perro_izquierda; //el sprite se vuelve el del perro mirando a la izquierda

hspeed = 0;
exit;


Como siempre, código no comprobado, pero de seguro funciona
alaberga regué el café.

BA:STFW&RTFM

Hmm, si es que entiendo bien (soy noob aún :D), ese código me sirve cuando el perro está en movimiento. Por ahora solo puedo hacer que si está con hspeed = 0, está sentado y a la izquierda, pero no puedo hacer que si está con velocidad 0 y antes tenía velocidad hacia la derecha, se quede sentado con esa orientación :S
Mi código actualmente es este:

[gml]if hspeed = 2 {
sprite_index = animDER; }
if hspeed = 2 {
hspeed = probabilidad ("-2%0.05, 0%0.05, 2%99.9*"); }

if hspeed = -2 {
sprite_index = animIZQ; }
if hspeed = -2 {
hspeed = probabilidad ("-2%99.9, 0%0.05, 2%0.05*") }

if hspeed = 0 {
hspeed = probabilidad ("0%99.9, -2%0.05, 2%0.05*"); }

if animDER {
image_speed = 0.2; }

if animIZQ {
image_speed = 0.2; }[/gml]

:)
Soy solo otro recién empezado que aspira a tener un juego en la vil tienda Play Store :D

espera, WAT!!!

Citarif hspeed = 2 {
hspeed = probabilidad ("-2%0.05, 0%0.05, 2%99.9*"); }
Probabilidad?.. qué es eso???
alaberga regué el café.

BA:STFW&RTFM

Es solo un pequeño script que tengo que fue actualizado desde aquí : http://www.comunidadgm.org/desarrollo-de-scripts/listas-probables-v2/

Pero aún no consigo resolver mi duda T_T (no sé por que no puedo poner emoticonos xd)
Soy solo otro recién empezado que aspira a tener un juego en la vil tienda Play Store :D

ah, ok... sigamos..xD

Según lo que entendí, quieres hacer que:  1)- El perro se mueve. 2)- al parar, comprobar si antes de parar estaba yendo a la izquierda o a la derecha. 3)- Si anteriormente ida a la derecha, cambiar su sprite al sprite del animDER, si iba a la izquierda, ponerse el de animIZQ

si lo que puse es correcto, podría arreglarse así.

evento en el que el perro para:
previous_hspeed = hspeed;
hspeed = 0;
if previous_hspeed <0
sprite_index = animIZQ;
if previous_hspeed >0
sprite_index = animDER;


Si no esta solución no resuelve tu duda, por favor tómate tu tiempo en explicarme detalladamente tu problema y qué quieres hacer...soy tontito...xD
alaberga regué el café.

BA:STFW&RTFM

Exactamente eso quiero
Pero el código: previous_hspeed no existe, lo inventé para dar a entender mi problema :S
Soy solo otro recién empezado que aspira a tener un juego en la vil tienda Play Store :D

#9 Octubre 11, 2015, 11:21:44 PM Ultima modificación: Octubre 11, 2015, 11:23:18 PM por penumbra
Lo que quieres hacer es más sencillo de lograr si en lugar de dos sprites (uno para la izquierda y otro para la derecha) usas un solo sprite. Otro beneficio es que el código se reduce considerablemente.

El sprite lo puedes voltear o "espejear" ajustando la variable image_xscale, por ejemplo image_xscale = -1. Al usar este método (un sólo sprite + ajustar la orientación mediante image_xscale), una vez que detengas la velocidad, el sprite va a quedar orientado en la dirección en la que se venía moviendo sin recurrir a más código.

Cita de: penumbra en Octubre 11, 2015, 11:21:44 PM
Lo que quieres hacer es más sencillo de lograr si en lugar de dos sprites (uno para la izquierda y otro para la derecha) usas un solo sprite. Otro beneficio es que el código se reduce considerablemente.

El sprite lo puedes voltear o "espejear" ajustando la variable image_xscale, por ejemplo image_xscale = -1. Al usar este método (un sólo sprite + ajustar la orientación mediante image_xscale), una vez que detengas la velocidad, el sprite va a quedar orientado en la dirección en la que se venía moviendo sin recurrir a más código.
mmm... algo más práctico..jejejej...


Cita de: KratosSeba en Octubre 11, 2015, 11:15:14 PM
Exactamente eso quiero
Pero el código: previous_hspeed no existe, lo inventé para dar a entender mi problema :S
y el código previous_hspeed obviamente no existe, es una variable que TÚ debes crear. debes inicializarla poniendo en el event create:

CREATE:

previous_hspeed = 0;


y después puedes modificarla como quieras...xD
alaberga regué el café.

BA:STFW&RTFM

Estoy en ello, veré si puedo hacer funcionar esto xDD
Gracias a ambos :D, ya les comento como me va con sus aportes.
Soy solo otro recién empezado que aspira a tener un juego en la vil tienda Play Store :D


Bueno, vengo recién entrando al PC, lo intenté a la primera y por fin lo logré ^_^
Así me quedó el código:

[gml]prev_hspeed = hspeed;

if hspeed = 2 {
sprite_index = animDER; }
if hspeed = 2 {
hspeed = probabilidad ("-2%0.05, 0%0.05, 2%99.9*"); }

if hspeed = -2 {
sprite_index = animIZQ; }
if hspeed = -2 {
hspeed = probabilidad ("-2%99.9, 0%0.05, 2%0.05*") }

if hspeed = 0 {
hspeed = probabilidad ("0%99.9, -2%0.05, 2%0.05*"); }

if prev_hspeed = -2 and hspeed = 0 {
sprite_index = perro_sit_IZQ } ;
if prev_hspeed = 2 and hspeed = 0 {
sprite_index = perro_sit_DER } ;

if animDER {
image_speed = 0.2; }

if animIZQ {
image_speed = 0.2; }[/gml]

Lo de quitar una orientación y solo invertir la otra lo intentaré en otro momento, ahora no me quiero calentar tanto la cabeza jejeje.
Gracias a ambos :)

SOLUCIONADO
Soy solo otro recién empezado que aspira a tener un juego en la vil tienda Play Store :D