Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: cesar561 en Agosto 30, 2015, 05:46:15 PM

Título: Problema obstaculo, rebote y giro (eternal runnig)
Publicado por: cesar561 en Agosto 30, 2015, 05:46:15 PM
Buenos días, estoy tratando de hacer un eternal runnig pero tengo un problema con uno de los obstaculos
este obstaculo es un objeto circulo (barril) que aparece y se mueve de derecha a izquierda del room y que tiene que girar y rebotar al mismo tiempo, el problema es que no puedo hacer que colisione correctamente con el objeto solido cuando uso la funcion image_angle en mi código para hacerlo girar. Espero alguien pueda ayudarme   :(. Aquí esta mi codigo.

//Create event

coll = 4;
grav = 1.5;
vspd = 0;
hspd = 6;
spd = 1;


//Step event

image_angle += spd ;



if(!place_meeting(x,y+1,obj_solid)){
   vspd += grav;
   
    }

else{

vspd = 0;
   
   
   if(coll == 3){
        vspd = -20;
       
   }
   
   if(coll == 2){
        vspd = -10;
   }
   
   if(coll == 1){
        vspd = -5;
       
   }
   
   

   if(coll == 0){
        vspd = 0;
        //spd = 8;
   }
     
   coll -=1 ;
}






//Vertical collision
if(place_meeting(x, y+vspd, obj_solid)){
    while(!place_meeting(x,y+sign(vspd),obj_solid)){
        y+=sign(vspd);
}
        vspd=0;
}   

y += vspd; // move the objet
x -= hspd;
Título: Re:Problema obstaculo, rebote y giro (eternal runnig)
Publicado por: Guacusio en Agosto 30, 2015, 07:53:29 PM
¿Qué quieres decir con que "colisione correctamente"? Tienes que describir con detalle cuál es el problema.
Título: Re:Problema obstaculo, rebote y giro (eternal runnig)
Publicado por: Marth en Agosto 30, 2015, 08:00:01 PM
¿"spd" viene a ser la variable speed?
Con direction=0, si le das un valor z a speed es como si hicieses hspeed=z vspeed=0

Si quieres que un objeto colisione del mismo modo independientemente de su image_angle, mejor no alteres realmente su image_angle.
Mejor crea una variable "angulo" y pon esto en el evento draw:

draw_sprite_ext(sprite_index,image_index,x,y,1,1,angulo,c_white,1)
Título: Re:Problema obstaculo, rebote y giro (eternal runnig)
Publicado por: cesar561 en Agosto 30, 2015, 09:31:30 PM
Muchas gracias.  No sería más recomendable de alguna manera poner la funcion draw_sprite_ext(sprite_index,image_index,x,y,1,1,angulo,c_white,1) en un Step event???????
ya que el objeto va girar constantemente hasta que salga del room y no solamente alterar el angulo original del sprite..
muchas gracias deverdad necesito ayuda.
Título: Re:Problema obstaculo, rebote y giro (eternal runnig)
Publicado por: Marth en Agosto 30, 2015, 09:38:28 PM
Cita de: cesar561 en Agosto 30, 2015, 09:31:30 PM
Muchas gracias.  No sería más recomendable de alguna manera poner la funcion draw_sprite_ext(sprite_index,image_index,x,y,1,1,angulo,c_white,1) en un Step event???????
ya que el objeto va girar constantemente hasta que salga del room y no solamente alterar el angulo original del sprite..
muchas gracias deverdad necesito ayuda.

No puedes poner funciones de "dibujo" en eventos que no sean "draw" aunque si que puedes poner eventos que no son de dibujo en el evento draw. ¡El código que te di no funcionaria en el evento step!
Título: Re:Problema obstaculo, rebote y giro (eternal runnig)
Publicado por: cesar561 en Agosto 30, 2015, 09:48:14 PM
Ok muchas gracias

entonces sería algo como esto???

//Create event

angulo = 360; // Quiere que este girando 360 grados constantemente o que valor le puedo dar????

//Draw event
draw_sprite_ext(sprite_index,image_index,x,y,1,1,angulo,c_white,1);
Título: Re:Problema obstaculo, rebote y giro (eternal runnig)
Publicado por: Marth en Agosto 30, 2015, 09:51:55 PM
El angulo tiene que ser un valor mayor o igual que 0 y menor que 360 (se admiten decimales. Ej: 359.99).
Lo ideal es que lo inicies a 0 por ello.
Título: Re:Problema obstaculo, rebote y giro (eternal runnig)
Publicado por: cesar561 en Agosto 30, 2015, 10:07:23 PM
No me funciona, solamente esta alterando el angulo original del sprite, necesito que el objeto
se vea girando  constantemente hasta que salga del room  :-X 
Título: Re:Problema obstaculo, rebote y giro (eternal runnig)
Publicado por: Marth en Agosto 30, 2015, 10:50:54 PM
Prueba este código en el evento step:

angulo++
if(angulo==360) angulo=0
Título: Re:Problema obstaculo, rebote y giro (eternal runnig)
Publicado por: cesar561 en Agosto 30, 2015, 11:30:29 PM
listo amigo funciono!!! de esta manera
//Create
angulo = 0;

//Step
angulo += 6;

if(angulo == 360){

    angulo=0;
}

//Draw
draw_sprite_ext(sprite_index,image_index,x,y,1,1,angulo,c_white,1);

muchas graciass por tu ayuda amigo!!  :) :)