Como hago para que objetos aparezcan de forma aleatoria en una room pero dentro de un recuadro predeterminado. Tengo la room, mi personaje y todo, hice que un objeto aparezca aleatoriamente en la room, pero el problema es que no aparecen dentro del recuadro y el objeto a veces aparece fuera de las paredes, por ende no lo puedo agarrar. Como tendría que hacer para que los objetos que aparecen aleatoriamente no queden fuera de donde estoy? Acá pongo una imagen que muestro que es lo que quiero hacer



Que los objetos sean creados dentro de donde esta remarcado en rojo. A ver si me pueden ayudar, ya soluciono esto y creo que el juego ya casi lo tengo  :-[
Cada día que pasa estoy mas enamorado de Holly Earl.

Indica cómo hiciste aparecer el objeto aleatoriamente, así será más fácil ayudarte.


Cita de: Guacusio en Junio 23, 2014, 10:48:28 PM
Indica cómo hiciste aparecer el objeto aleatoriamente, así será más fácil ayudarte.

Gracias guacusio por contestar :D Lo que hice fue crear un objeto (sin sprite claro esta) que cree un objeto cada tanto tiempo usando alarmas. Yo lo tengo así al código:

En el evento Create tengo:

alarm[0]=80

En el evento Alarm tengo:

if not instance_exists(obj_energia)
instance_create(random(room_width), random(room_height), obj_energia) ///acá estará el problema?

alarm[0]=80


Estoy casi seguro que el problema esta donde remarque, pero no se en que parte de ese código, me hace falta agregar algo ahí? o cambiar el código?  :-[



Cada día que pasa estoy mas enamorado de Holly Earl.

Supongamos que el área donde debe aparecer la instancia está definida por un rectángulo cuyos vértices superior izquierdo e inferior derecho son (x1,y1) y (x2,y2), respectivamente. Para acotar la creación de la instancia a esta superficie, modifica el código del instance_create como sigue:

instance_create(x1+irandom(x2-x1),y1+irandom(y2-y1),obj_energia);

Esto hace que la ubicación de la instancia creada esté entre x1 y x2 (para la coordenada x) y entre y1 e y2 (para la coordenada y).


antes de todo el codigo pon randomize();
para que al inicio no salga en la misma posicion

saludos
PURA VIDA



cuadroXInicio= 32
//cuadroInicio es una variable a la que le pones el valor x donde inicia el cuadro donde quieres que aparezcan las instancias
cuadroXFin = 700
//lo mismo que arriba pero donde termina
cuadroYInicio =100
cuadroYFin = 700

//le di valores hipoteticos recuerda cambiarlo


xxx=0;
xValor=0;
while (xxx=0)
{
  randomx= random(cuadroXFin)

  if ( randomx > cuadroXInicio)
     {
       xxx=0;
       xValor=randomx;
      }
}


yyy=0;
yValor=0;
while (yyy=0)
{
  randomy= random(cuadroYFin)

  if ( randomy > cuadroYInicio)
     {
       yyy=0;
       yValor=randomy;
      }
}


instance_create(xValor,yValor,objetoACrear)

//acá sea crea la instancia del objeto entre el cuadrado

_________________________________________

Jajjajaa no sé si sea la mejor forma pero así lo haría yo, si el cuadrado es una instancia podrías sacar el valor iniciar de el tomando el ancho de el cuarto, le restas el ancho del cuadro y esto lo divides en 2,  y sacar el valor final tomando el valor inicial mas el ancho del cuadrado, e igual para y, claro si el cuadrado es una instancia :)

Espero ser de ayuda :3 ;)


Cita de: Guacusio en Junio 23, 2014, 11:22:48 PM
Supongamos que el área donde debe aparecer la instancia está definida por un rectángulo cuyos vértices superior izquierdo e inferior derecho son (x1,y1) y (x2,y2), respectivamente. Para acotar la creación de la instancia a esta superficie, modifica el código del instance_create como sigue:

instance_create(x1+irandom(x2-x1),y1+irandom(y2-y1),obj_energia);

Esto hace que la ubicación de la instancia creada esté entre x1 y x2 (para la coordenada x) y entre y1 e y2 (para la coordenada y).

Esta opción me parece muy buena y limpia.
Supongo que lo único que faltaría es tener en cuenta el tamaño del objeto que queremos que aparezca de forma aleatoria y si nos daría lo mismo que pueda aparecer con parte de él fuera del cuadro definido.

Saludos

Gracias Guacusio, me funciono de 10 tu código, y gracias a los demás también por ayudar! Saludos!!! :D
Cada día que pasa estoy mas enamorado de Holly Earl.