Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Mr.Dudas en Octubre 23, 2012, 04:57:27 PM

Título: Cambiar un script
Publicado por: Mr.Dudas en Octubre 23, 2012, 04:57:27 PM
El siguiente script cuando el objecto lo utiliza va directamente a esa posición y me gustaria que no vaya directamente que parezaca que se este moviendo.

(AL COLISIONAR CONTRA EL JUGADOR)
if place_empty(other.hspeed,other.vspeed) {x+=8*other.hspeed y+=8*other.vspeed}}
Título: Re:Cambiar un script
Publicado por: noshy en Octubre 23, 2012, 05:14:35 PM
Utiliza la funcion move_towards_point (x, y, sp) que mueve un objeto a x,y pero con una velocidad sp.
Título: Re:Cambiar un script
Publicado por: Mr.Dudas en Octubre 23, 2012, 05:41:04 PM
Cita de: noshy en Octubre 23, 2012, 05:14:35 PM
Utiliza la funcion move_towards_point (x, y, sp) que mueve un objeto a x,y pero con una velocidad sp.
Hice esto y el objeto se va a esa direccion pero no para que hago para que luego se detenga?
Título: Re:Cambiar un script
Publicado por: noshy en Octubre 23, 2012, 05:44:11 PM
chequea las variables x , y, cuando sean iguales al punto donde quieres que llegue pornle speed = 0.

saludos


EDITO:

Adjunte un ejemplo, espero te sirva.
Título: Re:Cambiar un script
Publicado por: Mr.Dudas en Noviembre 04, 2012, 03:44:58 PM
Cita de: noshy en Octubre 23, 2012, 05:44:11 PM
chequea las variables x , y, cuando sean iguales al punto donde quieres que llegue pornle speed = 0.

saludos


EDITO:

Adjunte un ejemplo, espero te sirva.
Pero como hago que otro objeto lo pueda empujar(al object0) y chutar?Estuve mucho tiempo estando editando tu ejemplo pero no me sale  :'(
Título: Re:Cambiar un script
Publicado por: penumbra en Noviembre 05, 2012, 12:00:34 AM
No sé si esto es lo que deseas hacer:

Suponiendo que tienes un objeto llamado "pelota" y quieres que el objeto "jugador" modifique el movimiento del objeto "pelota". En el evento STEP de "jugador" escribes

pelota.x += valor_deseado1
pelota.y +=  valor_deseado2

Obviamente, eso debe ocurrir sólamente cuando el jugador golpea a la pelota, es decir, cuando hay una colisión de la pierna del jugador con el objeto pelota.

Título: Re:Cambiar un script
Publicado por: pikamaker en Noviembre 05, 2012, 12:57:08 AM
si es lo que dice penumbra yo lo que modificaría (mas que "x" e "y") sería la dirección y speed del obj pelota
Título: Re:Cambiar un script
Publicado por: Mr.Dudas en Noviembre 06, 2012, 04:26:44 PM
Cita de: penumbra en Noviembre 05, 2012, 12:00:34 AM
No sé si esto es lo que deseas hacer:

Suponiendo que tienes un objeto llamado "pelota" y quieres que el objeto "jugador" modifique el movimiento del objeto "pelota". En el evento STEP de "jugador" escribes

pelota.x += valor_deseado1
pelota.y +=  valor_deseado2

Obviamente, eso debe ocurrir sólamente cuando el jugador golpea a la pelota, es decir, cuando hay una colisión de la pierna del jugador con el objeto pelota.

Cita de: pikamaker en Noviembre 05, 2012, 12:57:08 AM
si es lo que dice penumbra yo lo que modificaría (mas que "x" e "y") sería la dirección y speed del obj pelota

repito estoy creando un juego de futbol top down y necesito un script que se utilize para mover la pelota el codigo que uso es:
(La PELOTA AL COLISIONAR CONTRA EL JUGADOR)

if place_empty(other.hspeed,other.vspeed) {x+=8*other.hspeed y+=8*other.vspeed}}

pero este codigo no es relativo es decir la pelota no va a una direccion va saltando a un direccion y eso se nota, lo que necesito es cambiar este script para que al mover la pelota sea relativo es decir que pareza que la pelota se esta moviendo.
Título: Re:Cambiar un script
Publicado por: penumbra en Noviembre 07, 2012, 01:34:19 AM
Ya veo lo que te pasa.

Desconozco si hay una función en GM que automáticamente devuleva la dirección dependiendo de las teclas que pulses (y su duración), si no existe, tienes que crear una para definir el ángulo con el que dispara el jugador. Tal vez ya tengas ese script, no lo sé, pero que la vista sea top-down ayuda a simplificar las cosas.

Me parece que lo más fácil es usar "tramposamente" la gravedad, para hacer que el balon avance poco a poco al punto de destino. Supongamos que tenemos la variable "angulo" (ángul ode disparo) y "límite" (límite de velocidad para el balón)


other.graviy = 3                                                 //Defines un valor adecuado para la velocidad del disparo
other.gravity_direction = angulo                       //La dirección del disparo según las teclas presionadas
if (vspeed > limite) or (hspeed > limite)             //Evitar que...
{
vspeed = limite                                                  //el balón adquiera velocidades...
hspeed = limite                                                 //exageradas como en "Los supercampeones"xD
}


Creo que también se pueden usar estas funciones si no deseas usar la gravedad para mover el balón (yo nuca las he usado hasta ahora)

motion_set(dir,speed) Sets the motion with the given speed in direction dir.
motion_add(dir,speed) Adds the motion to the current motion (as a vector addition).


Hay que frenar el movimiento del balón poco a poco, para simular un tiro real

if (vspeed > 0) or (hspeed > 0)
{
         vspeed -= friccion                       //Ajusta friccion a un valor conveniente, según tus necesidades
         hspeed -= friccion
}


¿Funciona? Quién sabe  ;D