Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Algún comando como esto? if previous_hspeed [SOLUCIONADO]  (Leído 419 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado 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
« última modificación: Octubre 12, 2015, 03:00:53 am por KratosSeba »

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


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2835
  • Mensajes: 1.710
  • Agradecido: 146 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • Ver Perfil
Respuesta #1 en: Octubre 11, 2015, 10:30:04 pm
mmm... déjame pensar...
Ya!:  Puedes ir dejando una variable "rastro" que se limite al hspeed antes de ser modificado, por ejemplo:

Código: [Seleccionar]
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
 


Desconectado KratosSeba

Respuesta #2 en: Octubre 11, 2015, 10:30:11 pm
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
« última modificación: Octubre 11, 2015, 10:31:46 pm por KratosSeba »

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


Desconectado bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2835
  • Mensajes: 1.710
  • Agradecido: 146 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • Ver Perfil
Respuesta #3 en: Octubre 11, 2015, 10:44:40 pm
A ver...
...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:

Código: [Seleccionar]
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
 


Desconectado KratosSeba

Respuesta #4 en: Octubre 11, 2015, 10:56:45 pm
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:

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; }

:)

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


Desconectado bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2835
  • Mensajes: 1.710
  • Agradecido: 146 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • Ver Perfil
Respuesta #5 en: Octubre 11, 2015, 10:59:40 pm
espera, WAT!!!

Citar
if hspeed = 2 {
 hspeed = probabilidad ("-2%0.05, 0%0.05, 2%99.9*"); }
Probabilidad?.. qué es eso???

alaberga regué el café.

BA:STFW&RTFM
 


Desconectado KratosSeba

Respuesta #6 en: Octubre 11, 2015, 11:03:33 pm
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
 


Desconectado bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2835
  • Mensajes: 1.710
  • Agradecido: 146 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • Ver Perfil
Respuesta #7 en: Octubre 11, 2015, 11:10:20 pm
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:
Código: [Seleccionar]
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
 


Desconectado KratosSeba

Respuesta #8 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

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


Desconectado penumbra

Respuesta #9 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.
« última modificación: Octubre 11, 2015, 11:23:18 pm por penumbra »

 


Desconectado bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2835
  • Mensajes: 1.710
  • Agradecido: 146 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • Ver Perfil
Respuesta #10 en: Octubre 11, 2015, 11:24:55 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...


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:

Código: [Seleccionar]
CREATE:

previous_hspeed = 0;

y después puedes modificarla como quieras...xD

alaberga regué el café.

BA:STFW&RTFM
 


Desconectado KratosSeba

Respuesta #11 en: Octubre 11, 2015, 11:38:03 pm
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
 


Desconectado KratosSeba

Respuesta #12 en: Octubre 12, 2015, 03:00:21 am

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

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; }

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