Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: [Ayuda] hacer que un item aparezca a un radio al rededor del jugador.  (Leído 792 veces)

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

Desconectado rick136

  • Visitante
  • *
  • Puntos: 32
  • Mensajes: 5
    • Ver Perfil
Hola, les comento que estoy aprendiendo a usar game maker asi que soy bastante noob :-[.

actualmente estoy haciendo el sistema de items de mi juego y para equiparse un objeto es al estilo "the binding of isaac" (esta el objeto en el suelo y si colisionas con el, te lo equipas y "sueltas" el que tengas equipado si es que tienes uno).

el sistema de equiparte y soltar el objeto ya  lo tengo hecho, el problema es a la hora de posicionar el objeto soltado. no se muy bien como hacer que el objeto se suelte a un rango mínimo y máximo del jugador.

he estado probando con un bucle "do" pero no se muy bien como hacerlo, el código con el que estaba probando es el siguiente (lo tengo puesto en el evento de colision con el jugador):

Código: [Seleccionar]
var obj, itemX, itemY;

obj = other.arrEquipSkill[other.equipSkill,5]; //este es el arreglo donde tengo puesto las habilidades, y esta es la posicion del item asociado

do{
   randomize();
   itemX = random_range(obj_player.x+100,obj_player.x-100);
   itemY = random_range(obj_player.y+100,obj_player.y-100);
   /// condicionar distancia del jugador
   disMax = point_distance(obj_player.x,obj_player.y,x,y) > 50;
   disMin = point_distance(obj_player.x,obj_player.y,x,y) < 100;
   noColision = place_free(x,y)

}until(disMax and disMin and noColision)

instance_create(itemX,itemY,obj) //crea la instancia del objeto asociada al arreglo de mas arriba

other.equipSkill = icon //ignoren esto, solo cambia el icono que se muestra en hud del jugador

instance_destroy())

PD: olvide comentarlo, el problema que tengo con este codigo es que no se porque, pero siempre me crea los objetos hacia abajo y la derecha del jugador :-[

espero haberme explicado bien, agradeceria mucho una mano con esto  :)

« última modificación: Julio 17, 2019, 04:15:43 pm por rick136 »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado getnoff

¿Revisaste que los puntos de origen de todos los sprites estén alineados? a veces por esta causa los objetos no se posicionan correctamente unos con otros.

 


Desconectado Silver_light

Me gusta tu algoritmo, fácil de entender e intuitivo de primeras. Aún asi te dejo mi propuesta, un script que hace lo mismo pero personalizado.
var xs = argument0;
var ys = argument1;
var obj = argument2;
var radio_min = argument3;
var radio_max = argument4;

randomize();

var d = irandom(360);
var r = irandom_range(radio_min, radio_max);
var xx = cos(degtorad(d)) * r;
var yy = -sin(degtorad(d)) * r;

instance_create(xs + xx, ys + yy, obj);

Bastaría llamarlo como:
scr_create_radio(x, y, objeto, 50, 100);

Para que crease el item dentro del radio de 50 y 100 pixeles.
Habría que colocar la condición para cuando no hay espacio libre solamente.

 
Los siguientes usuarios dieron las gracias a este tema: rick136


Desconectado rick136

  • Visitante
  • *
  • Puntos: 32
  • Mensajes: 5
    • Ver Perfil
Me gusta tu algoritmo, fácil de entender e intuitivo de primeras. Aún asi te dejo mi propuesta, un script que hace lo mismo pero personalizado.
var xs = argument0;
var ys = argument1;
var obj = argument2;
var radio_min = argument3;
var radio_max = argument4;

randomize();

var d = irandom(360);
var r = irandom_range(radio_min, radio_max);
var xx = cos(degtorad(d)) * r;
var yy = -sin(degtorad(d)) * r;

instance_create(xs + xx, ys + yy, obj);

Bastaría llamarlo como:
scr_create_radio(x, y, objeto, 50, 100);

Para que crease el item dentro del radio de 50 y 100 pixeles.
Habría que colocar la condición para cuando no hay espacio libre solamente.

no se me habia ocurrido hacerlo asi! genial para que tambien sirva como sistema de loot para los enemigos.

 


Desconectado rick136

  • Visitante
  • *
  • Puntos: 32
  • Mensajes: 5
    • Ver Perfil
¿Revisaste que los puntos de origen de todos los sprites estén alineados? a veces por esta causa los objetos no se posicionan correctamente unos con otros.

ya lo pude solicionar, el problema era a la hora de las coordenadas  :-[