Hola gente, tengo un pequeño problema, pero no es tan complicado.
Tengo un objeto que es un enemigo, y se mueve a una velocidad de 3. Yo quiero que ese objeto valla aumentando la velocidad de a poco hasta llegar a un límite, supongamos que 100. Por lo que de a poco tiene que comenzar con una velocidad de 3 hasta alanzar una velocidad de 100, y de ahí en mas seguir manteniendo la velocidad de 100.
¿Como puedo implementarlo?
No sé qué código usas para mover al objeto pero si usas speed, vspeed o hspeed pon esto en el <Step>:
if speed<100 { speed+=0.5; }
(Cambia speed por vspeed o hspeed según lo que sea).
Si mueves al objeto usando el D&D de las flechitas rojas puedes pasarlo a código así para que funcione:
action_move("000001000",velocidad)
Esto en el <Step> y entonces en el <Create> declaras la variable velocidad, que tenga como valor 3.
Y en el <Step> también añades el código que he puesto antes pero en vez de con speed, con velocidad.
Ahora te digo qué son esos 00000 que he puesto.
Si te mueves a la derecha ese string es "000001000" (el que he puesto).
Si vas a la izquierda es: "000100000".
Si vas arriba: "000000010"
Si vas abajo: "010000000"
Los demás son las diagonales, y el del centro es el stop.
Espero que te sirva.
Un saludo!
Cita de: Mega G en Marzo 19, 2014, 08:37:12 PM
No sé qué código usas para mover al objeto pero si usas speed, vspeed o hspeed pon esto en el <Step>:
if speed<100 { speed+=0.5; }
(Cambia speed por vspeed o hspeed según lo que sea).
Si mueves al objeto usando el D&D de las flechitas rojas puedes pasarlo a código así para que funcione:
action_move("000001000",velocidad)
Esto en el <Step> y entonces en el <Create> declaras la variable velocidad, que tenga como valor 3.
Y en el <Step> también añades el código que he puesto antes pero en vez de con speed, con velocidad.
Ahora te digo qué son esos 00000 que he puesto.
Si te mueves a la derecha ese string es "000001000" (el que he puesto).
Si vas a la izquierda es: "000100000".
Si vas arriba: "000000010"
Si vas abajo: "010000000"
Los demás son las diagonales, y el del centro es el stop.
Espero que te sirva.
Un saludo!
Me funcionó este código en el steep
if speed<100 { speed+=0.5; }
Pero ahora surgió algo del cuál no me había percatado. Veraz, con el código que me pasaste acelera de 0.5 a 100. Lo cuál esta perfecto, pero lo hace muy rápido al lapso de 0.5 a 100. ¿Si yo quiero que se demore por ejemplo 3 min en llegar a la velocidad de 100 como lo hago?
Pues si sumar 0.5 cada vez te parece muy rápido suma menos cantidad.
¿Quieres ajustarla en función del tiempo?
De acuerdo, vamos a hacer matemáticas XD
Como tu velocidad crece de forma lineal tiene la ecuación de una recta:
Y=AX+B
En este caso:
V(T)=AT+V0
V(T) = Velocidad en un tiempo T (unidad: píxeles/step)
A = incremento que queremos encontrar (unidad: píxeles/(steps^2))
T = tiempo (unidad: steps)
V0 = velocidad inicial = 3 en este caso (unidad: píxeles/step)
En nuestro caso T = 3 minutos = 180 segundos = 5400 steps (siempre y cuando tu room_speed sea de 30 steps/segundo)
Así que V(T) = V(3 minutos) = 100 según me has dicho en el enunciado, que la velocidad final al cabo de 3 minutos sea 100.
Entonces como solo tenemos 1 incógnita resolvemos la ecuación:
100 = A*5400 + 3
Que equivale a: 97 = A*5400
Que equivale a: A=(97/5400) Introduce este valor tal cual en el Game Maker. Así será lo más preciso posible.
Tienes que sumarle 97/5400 a speed en el evento <Step>.
Espero que te sirva.
Y sobretodo espero no haber hecho ningún error calculando :-[
Un saludo!
Cita de: Mega G en Marzo 19, 2014, 09:35:19 PM
Pues si sumar 0.5 cada vez te parece muy rápido suma menos cantidad.
¿Quieres ajustarla en función del tiempo?
De acuerdo, vamos a hacer matemáticas XD
Como tu velocidad crece de forma lineal tiene la ecuación de una recta:
Y=AX+B
En este caso:
V(T)=AT+V0
V(T) = Velocidad en un tiempo T (unidad: píxeles/step)
A = incremento que queremos encontrar (unidad: píxeles/(steps^2))
T = tiempo (unidad: steps)
V0 = velocidad inicial = 3 en este caso (unidad: píxeles/step)
En nuestro caso T = 3 minutos = 180 segundos = 5400 steps (siempre y cuando tu room_speed sea de 30 steps/segundo)
Así que V(T) = V(3 minutos) = 100 según me has dicho en el enunciado, que la velocidad final al cabo de 3 minutos sea 100.
Entonces como solo tenemos 1 incógnita resolvemos la ecuación:
100 = A*5400 + 3
Que equivale a: 97 = A*5400
Que equivale a: A=(97/5400) Introduce este valor tal cual en el Game Maker. Así será lo más preciso posible.
Tienes que sumarle 97/5400 a speed en el evento <Step>.
Espero que te sirva.
Y sobretodo espero no haber hecho ningún error calculando :-[
Un saludo!
Muchísimas gracias! Por ahí jodo mucho porque no se mucho de programación, pero si de diseño, ya que soy licenciado en diseño gráfico.
Cuando necesites una mano con la parte gráfica cuenta conmigo.