tengo un problemilla, es que se trata sobre como hago que solamente el arma del dron gire, abajo dejo mi proyecto, y tambien me gustaria saber como hago que el dron se mueva de un lugar a otro. Espero su ayuda, llevo muco tiempo y aun no encuentro la forma. uso el game maker studio :GMS:



Cita de: NiuWeb en Octubre 10, 2017, 04:06:25 PM
Explícate mejor.
Como sabes los drones vuelan, pero tengo un circulo y ha ese circulo le llamo arma, solamente quiero que esa parte llamado arma --> gire , claro que la direccion es hacia el personaje, pero si has visto el proyecto que dejo para que lo pruebes, te daras cuenta de que el dron gira completamente y a parte de eso no se siente que fuera un dron simulado "de verdad".. Me encuentro en cero, el script lo encontre en otra publicación, puedes decirme como lo hago?

Cita de: royer11 en Octubre 10, 2017, 04:26:42 PM
Cita de: NiuWeb en Octubre 10, 2017, 04:06:25 PM
Explícate mejor.
Como sabes los drones vuelan, pero tengo un circulo y ha ese circulo le llamo arma, solamente quiero que esa parte llamado arma --> gire , claro que la direccion es hacia el personaje, pero si has visto el proyecto que dejo para que lo pruebes, te daras cuenta de que el dron gira completamente y a parte de eso no se siente que fuera un dron simulado "de verdad".. Me encuentro en cero, el script lo encontre en otra publicación, puedes decirme como lo hago?
El proyecto está dañado.
Aún así, te hice un ejemplo muy básico.

Para hacer cosas más complicadas, te recomiendo que estudies algo acerca de las funciones vectoriales y trigonométricas.
http://docs-gamemaker-es.blogspot.com.co/p/funciones-vectoriales.html
http://docs-gamemaker-es.blogspot.com.co/p/funciones-de-numeros-reales.html#trigonometria
alaberga regué el café.

BA:STFW&RTFM

#4 Octubre 10, 2017, 05:24:03 PM Ultima modificación: Octubre 10, 2017, 05:46:34 PM por anael
lo mas simple que se me ocurre es que
En el eventro CREATE:
rotDron=0;//Declare esta variable

En el Evento DRAW:
//Dibujas el Dron
draw_sprite_ext(sprDron,0,x,y,1,1,rotDron,c_white,1);
//Dibujas la Arma
var rot=point_direction(x,y+16,mouse_x,mouse_y);//parte de la posicion del arma y hace la rotacion
draw_sprite_ext(sprDronArma,0,x,y+16,1,1,rot,c_white,1);//Aqui dibuja el arma mas la rotacion

//Yyy para el movimiento pones este codigo ya sea en draw o en steep

if keyboard_check(ord("A")){ if rotDron>-15{rotDron-=0.25;} }else
if keyboard_check(ord("D")){ if rotDron<15 {rotDron+=0.25;} }else{
if rotDron>1{rotDron-=0.5;}else if rotDron<1{rotDron-=0.5;}else{rotDron=0;}}//Esto sirve para estabilisar el dron

y pues nada suerte

Muchas gracias por tu respuesta, lo voy a intentar hacer, y tengo una duda, como creo un enemigo que me persiga y al estar cerca cambie sprite "ejemplo atake", y cuando el personaje se aleja cambie el sprite a caminar o correr, puedes darme algun ejemplo?

[gml]
////Evento step del enemigo
if(distance_to_object(oJugador) < 100) //por ejemplo
    sprite_index = atacando;
else
    sprite_index = caminando;
[/gml]
alaberga regué el café.

BA:STFW&RTFM

Cita de: NiuWeb en Octubre 11, 2017, 04:51:11 PM
[gml]
////Evento step del enemigo
if(distance_to_object(oJugador) < 100) //por ejemplo
    sprite_index = atacando;
else
    sprite_index = caminando;
[/gml]

si el enemigo tiene sprite caminando hacia la derecha e izquierda , pienso en agregar

[gml] if sprite_index = caminando_derecha
           sprite_index = atacar_derecha;
      if  sprite_index = caminando_izquierda
         sprite_index = atacar_izquierda  [/gml]

puedes hacerme un tuto desde cero, como crear enemigo que persiga al jugador y este se pare para atacar y cuando se aleja el jugador el enemigo lo siga;
puedes ayudarme amigo mio, estoy metido en esto y mi objeto enemigo no cambia de sprite, pero si se detiene, ayudame, no entiendo tanto el buen funcionamiento












Da más información de tu enemigo y tu juego. ¿Cómo se mueve el enemigo? ¿Es un juego de plataformas? ¿El enemigo va "por el suelo", o sea, se ve afectado por la gravedad y debe tener en cuenta los bloques sólidos, o sólo va de izquierda a derecha ignorando todo lo anterior?
alaberga regué el café.

BA:STFW&RTFM

tienes toda la raazon, la emocion no me hace especificarme, en fin ..

es un juego de zombie, debe ser similar a mario, entonces es de plataformas, el enemigo va por el suelo y es afectado por la gravedad, teniendo encuenta los bloques, tambien va ha ser afectado, espero que lo entiendas, y mucha gracias por responder

Cita de: royer11 en Octubre 11, 2017, 11:07:14 PM
tienes toda la raazon, la emocion no me hace especificarme, en fin ..

es un juego de zombie, debe ser similar a mario, entonces es de plataformas, el enemigo va por el suelo y es afectado por la gravedad, teniendo encuenta los bloques, tambien va ha ser afectado, espero que lo entiendas, y mucha gracias por responder
Mejor. Ahora, ¿puedo ver el código con el que mueves al enemigo? Hay varias formas de hacer lo que buscas, y sin conocer el código actual tal vez te dé soluciones muy complicadas o que te hagan cambiar todo el código.
alaberga regué el café.

BA:STFW&RTFM

primero creo un evento create, dentro de el agrego, start moving in a direction;
   

estando dentro del evento create he añadido este codigo
[gml]
//cambio de sprite de inzquieda a derecha
if hspeed <= 0
   {
     sprite_index = spr_enemy1_left ;
     image_speed = 0.5
   
   }
   if hspeed >= 0  {
   
      sprite_index = spr_enemy1_right;
      image_speed = 0.5
     }
     
[/gml]

ahora dentro del evento step, he puesto la gravedad


con respecto a las colisiones, solamente he escrito este codigo

[gml]
// solido y la direccion

move_contact_solid(direction,12) vspeed = 0;
[/gml]




#12 Octubre 11, 2017, 11:47:22 PM Ultima modificación: Octubre 11, 2017, 11:49:32 PM por NiuWeb
Agrega esto en el evento step:
[gml]
var donde = sign(oPlayer.x - x); //oPlayer es el nombre del jugador
if(donde <> 0)
{
    hspeed = 1.3 * donde;
    if(donde == 1)
        sprite_index = sAtacando_derecha;
    else
        sprite_index = sAtacando_izquierda;
}
[/gml]
EDIT: Había un error, lo corregí.
alaberga regué el café.

BA:STFW&RTFM

esta genial el codigo, para que solamente cambie el sprite cuando se encuentra a tal distancia y que la velocidad este en cero, o sea que el enemigo se pare "no tenga velocidad" y ahi es donde cambie sprite de ataque, habia visto el codigo --

[gml] if distance_to_object(oPlayer) <= 26
{
    // ¿es speed o es  hspeed?
            speed = 0;

    if sprite_index =  scAminando_derecha
       sprite_index = sAtacando_derecha;

if sprite_index =  scAminando_izquierda
       sprite_index = sAtacando_izquierda;

}
else
{
// ¿es speed o es  hspeed?
speed = 1.3



if sprite_index =   sAtacando_derecha
       sprite_index = scAminando_derecha   ;

if sprite_index =   sAtacando_izquierda
       sprite_index = scAminando_izquierda;
}
[/gml]