Loader

Shoutbox

point_direction? + point_distance (solucionado )

Publicado por Ikaro3d, Diciembre 10, 2021, 07:02:33 PM

Tema anterior - Siguiente tema

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

Diciembre 10, 2021, 07:02:33 PM Ultima modificación: Diciembre 12, 2021, 11:27:23 AM por Ikaro3d
Hola compañeros no se hacer  que mi robot se desplace a un punto y se detenga, cuando llega a la posición parpadea

tengo puesto es step :  switch (posicion_robot) {
   
       case 1:
              
                direction = point_direction(x, y, 1400, 600 )
            
             break

Diciembre 10, 2021, 09:15:22 PM #1 Ultima modificación: Diciembre 11, 2021, 09:42:00 AM por Jeffrey Faper
ya intento poner la velocidad a cero  ademas tiene que cambiar de estado cuando el objeto llega a su posicion por ejemplo
[gml]
  speed = mainspd; //VELOCIDAD DE MOVIMIENTO

switch(posicion_robot)
{
case "DESTINY1":
 
  //CAMBIAR DE ESTADO SI LA POSICION DEL OBJETO ES >= mayor o igual  o <= menor o igual QUE SU DESTINO
  if(x>=1400 && y>=600)  // >= o <= DEPENDIENDO SI SU OBJETO RECORRE LA PANTALLA DE ARRIBA HACIA ABAJO O VICEVERSA
                                             // DE IZQUIERDA A DERECHA Y VICEVERSA
  {
   posicion_robot = "STANDBY";//cambio de estado
   mainspd =  0;//velocidad de su objeto
  }
  break;

case "STANDBY": //aciones mirar sus  ojos bonitos , disparar , tomar un descanso etc etc

var timer = 0+current_time/6000;  //TEMPORIZADOR
var target = point_direction(x,y,objeto.x,objeto.y) //MIRAR HACIA OBJETIVO
   
    image_angle = target;
  //DISPARAR
  if(timer%3==0)
  {   
   var bull = instance_create(x,y,bullet);
       bull.mainspd = 20*dtime;
       bull.direction = target;
  }
  //CAMBIAR DE ESTADO OTRA VEZ
  if(timer>=5)
  {
   posicion_robot = "OTHER STATE"     
  }
  break;

case "OTHER STATE": break;
}
[/gml]

Diciembre 11, 2021, 04:14:27 PM #2 Ultima modificación: Diciembre 12, 2021, 11:31:35 AM por Ikaro3d
Muchas gracias ,muy bien resuelto , me avía quedado estancado    ;D

Diciembre 12, 2021, 11:26:19 AM #3 Ultima modificación: Diciembre 12, 2021, 11:28:44 AM por Ikaro3d
Al final lo he echo con :  point_distance , cuando el robot se acerca al punto y esta a  menos de 10 pixel la velocidad es 0



[gml]switch (posicion_robot) {
   
       case 1:
              
            direction = point_direction(x, y, 1400, 600 )//direcion a tomar
            
             speed=velocida
            
            if point_distance(x,y,1400,600) <10 { speed=0}//mide la distancia y si esta menos de 10 pixel velocidad es 0
          
            if !alarm[1] { alarm[1]=60*3   }
            
             break
         
      
      case 2:   
             
            direction = point_direction(x, y, 1720, 205 )
            
            speed=velocida
            
             if point_distance(x,y,1820,205) <10 { speed=0 }
            
               if !alarm[1] { alarm[1]=60*3    }
            
           break;
         
       case 3:
      
              direction = point_direction(x, y, 1400, 1140 )
            
             speed=velocida
            
             if point_distance(x,y,1400,1140) <10 { speed=0 }
            
              if !alarm[1] { alarm[1]=60*3    }
      
    default:
   
        break;
}[/gml]

Diciembre 12, 2021, 06:41:15 PM #4 Ultima modificación: Diciembre 12, 2021, 06:50:27 PM por Jeffrey Faper
Cita de: Ikaro3d en Diciembre 11, 2021, 04:14:27 PM
Muchas gracias ,muy bien resuelto , me avía quedado estancado    ;D
De nada para eso estamos , yo tambien la lio con esas funciones del game maker sobre todo con move_towards_point
pero bueno ahora que esta usando una variable para controlar la velocidad de sus objetos cuando pause y despause su juego le resultara mas sencillo restablecerla
claro eso dependera de como maneje la pausa de su juego
[gml]
if(global.paused){
    speed = 0;
    }
if(!global.paused){
    speed = velocida;
    }
[/gml]

Powered by EzPortal