Hola soy nuevo en el foro. Hace un mes que descubri el game maker y estoy haciendo mi primer juego de plataformas pero tengo algunas dudas.

1. ?Qu? hay que hacer para que el protagonista del juego coja un objeto y luego lanzarlo contra sus enemigos?
2. Otra duda es esta. Me gustar?a que cuando un enemigo este cerca del protagonista ?l le ataque de un espadazo (o cualquier objeto).


Hola y bienvenido a CGM :)

Bueno, una forma de hacer al personaje coger un objeto es definiendo una variable en el create del personaje, digamos:

Objeto personaje->Create
[gml]arrojable=noone
[/gml]

Entonces, si presionamos la tecla 'X', por ejemplo, y si el objeto en cuestion esta suficientemente cerca, hacemos:

Objeto personaje->Press 'X'
[gml]if arrojable = noone {                     //no tengo otro objeto arrogable en la mano
   obj=instance_nearest(x,y,objeto)
   if distance_to_object(obj) < 16 then {  //se esta suficientemente cerca
       arrojable=obj
   }
}
[/gml]

Entonces, hacemos que el objeto 'acompa?e al personaje':

Objeto personaje->Step
[gml]if arrojable != noone {   //tengo un objeto arrojable!
   arrojable.x = x        //sumar/restar cantidad a x dependiendo donde llevo el objeto
   arrojable.y = y        //sumar/restar cantidad a y dependiendo donde llevo el objeto
}[/gml]


Finalmente, para arrojarlo,  debes a?adir el sgte codigo al presionar 'X':

Objeto personaje->Press 'X'
[gml]if arrojable = noone {                     //no tengo otro objeto arrogable en la mano
   obj=instance_nearest(x,y,objeto)
   if distance_to_object(obj) < 16 then {  //se esta suficientemente cerca
       arrojable=obj
   }
} else { //tengo un arrojable
    arrojable.direccion = dir      //dir=0 derecha, dir=180 izquierda
    arrojable.speed = sp         //definir sp segun velocidad de lanzamiento
    arrojable = noone            //ya no lo tengo
}

[/gml]

Lo demas ya sabras como hacerlo :)

Respecto de lo segundo, puedes checkear la distancia al personaje y actuar, asi:

Objeto Enemigo->Step
[gml]
if distance_to_objet(x,y,personaje) < distancia_de_ataque and espera = 0{
    //realizar algun ataque, por ejemplo disparar bala
    b=instance_create(x,y,bala)
    b.direction = point_to_direction(x,y,personaje.x, personaje.y)
    b.speed = sp
    espera = 100    //poner espera para proximo disparo
}

if espera > 0 espera =-1

[/gml]

Obviamente debes inicializar las variables correspondientes en el create para que funcione.

Espero que esto te sirva :)

Saludos,

JMG.-








Proyectos
-Julius Brown and the Lost Dungeons [|||||||  ] (80%)
-Jurbol![|||||||| ] (95%)
-Random Things [|          ] (10%)

Gracias por la respuesta pero me ha pasado esto y no se como solucionarlo. En mi segunda pregunta, la del enemigo atacando, me sale esto.

FATAL ERROR in
action number 5
of  Step Event
for object object260:

COMPILATION ERROR in code action
Error in code at line 1:
   if distance_to_objet(x,y,Protagonista) < distancia_de_ataque and espera = 0{
     ^
at position 4: Unknown function or script: distance_to_objet



Y el otro problema, el de coger un objeto y lanzarlo, cuando le doy al bot?n para cogerlo, el objeto desaparece y cuando quiero lanzarlo pues ocurre esto.



El objeto que lanza mi personaje aparece en el cielo.

[gml]distance_to_object(x,y,Protagonista) [/gml]
Sorry :-[

En cuanto lo del lanzamiento, no sabria decirte.
Puedes postear el codigo, o mejor, el gmk?
Proyectos
-Julius Brown and the Lost Dungeons [|||||||  ] (80%)
-Jurbol![|||||||| ] (95%)
-Random Things [|          ] (10%)

Aqu? tienes el c?digo de lanzar el objeto.



if arrojable = noone {                     //no tengo otro objeto arrogable en la mano
  obj=instance_nearest(x,y,bombona)
  if distance_to_object(bombona) < 16 then {  //se esta suficientemente cerca
      arrojable=bombona
  }
} else { //tengo un arrojable
   arrojable.direccion = 0      //dir=0 derecha, dir=180 izquierda
   arrojable.speed = 10         //definir sp segun velocidad de lanzamiento
   arrojable = noone            //ya no lo tengo
}