Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: danielsanleo en Agosto 30, 2011, 08:40:14 PM

Título: ?hacer que aparezca gente aleatoriamente?
Publicado por: danielsanleo en Agosto 30, 2011, 08:40:14 PM
hola estoy haciendo un gta y queria saber como se hace para que la gente salga aleatoriamente en la calle, gracias
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: kaliman777 en Agosto 30, 2011, 10:35:05 PM
Cita de: danielsanleo en Agosto 30, 2011, 08:40:14 PM
hola estoy haciendo un gta y queria saber como se hace para que la gente salga aleatoriamente en la calle, gracias

Haz lo siguiente:

1. Crea un objeto que controle la aparici?n de la gente (por supuesto que ya tienes los sprites de cada personaje y los objetos de la gente).
2. En create de este objeto agrega una alarma a 10 steps por ejemplo, o seg?n el tiempo que quieres que transcurra entre que aparecen personas. Pon alarm[0]=10
3. en la alarma pon esto: instance_create(random(room_widht), random(room_height), obj_gente) y pon aqu? tambi?n alarm[0]=10

Con esto har?s que se aparezca una persona y que 10 steps despu?s de aparecer esta, aparezca otra en cualquier sitio al azar. Debes modificar los valores seg?n tus gustos, incluso puedes decidir d?nde aparezcan los sujetos.

Si no puedes, avisa no m?s y te ayudo, hasta te podr?a hacer un engine.

Suerte y pa?lante!!
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: VideoGamer en Agosto 31, 2011, 12:19:31 AM
Tengo duda.
C?mo se le har?a para que no aparezca encima de otro objeto.
Tengo la idea de que s? se puede pero no se c?mo. ???
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: danielsanleo en Agosto 31, 2011, 12:46:02 AM
 :GM8:gracias, pero no lo he entendido, con un engine mejor, muchas gracias
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: elviskelley en Agosto 31, 2011, 02:21:10 AM
ok lo primero esta bien un object controlador que haga que aparezca la gente.
pero debes hacerlo asi.
event create.
alarm[0]=10*room_speed;

event alarm[0]
alarm[0]=10*room_speed;
var a,b;
a=random(room_width)
b=random(room_height)
if place_empty(a,b)
{
instance_create(a,b,objGente);
}
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: MaanuRP en Agosto 31, 2011, 02:28:31 AM
Aca te dejo un engine con ya todo terminado:

@ 3 tipos de personas (Son circulos de colores, pero puedes cambiarle los sprites facilemente.
@ Cada 50 steps coloca un tipo de persona al azar dentro de la room en algun lugar vacio (Con esto tuve una duda, porque usando place_empty que es para detectar si no hay nada en un lugar pero que tambien detecta objetos no solidos no me funciono, asi que tuve que usar place_free pero poniendo a los objetos de las personas en solido)

Te lo dejo aca adjunto

Saludos!
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: danielsanleo en Agosto 31, 2011, 10:04:56 PM
gracias por los esfuerzos pero aun asi nose, nose si tengo que cambiar algo en el codigo, gracias
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: MaanuRP en Agosto 31, 2011, 11:11:39 PM
Que deseas hacer?

Lo que tu pediste ya te lo explicamos, pero debes querer otra cosa, que es lo que quieres distinto de ese engine?
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: danielsanleo en Agosto 31, 2011, 11:14:24 PM
no, solamente que no me funciona porque nose si por ejemplo en la linea que pone obj_Gente tengo que cambiarlo y poner (en mi caso) persona_1 . o quizas tenga que cambiar algo mas
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: MaanuRP en Septiembre 01, 2011, 12:04:46 AM
Ah, no conoces GML?

La funcion que se usa es:

[gml]
instance_create(x,y,obj)

//Donde "x" es el valor de x que tendra el objeto a crear.
//Donde "y" es el valor de y que tendra el objeto a crear.
//Donde "obj" es el nombre del objeto a crear.
//Entonces lo unico que debes hacer es cambiar "Persona_1" por el nombre de tu objeto de persona.
[/gml]
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: danielsanleo en Septiembre 01, 2011, 12:42:43 AM
vale muchas gracias ya me funciona, y ahora como podria hacer que cuando esas personas esten a tantos metros del jugador desaparezcan, para que no salgan demasiadas y se me bloquee
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: MaanuRP en Septiembre 01, 2011, 01:24:50 AM
En el evento Step del objeto de las personas (Si usas un patern para juntar todo, va en el patern):
[gml]
if distance_to_object(Jugador) <= 32
{
instance_destroy()
}

//Lo que hace esto es verificar si el objeto de las personas esta a 32 o menos pixeles de distancia del objeto "Jugador" y si es asi, se destruye.
//Si lo que quieres es que directamente no aparezcan, tendras que editar el engine que te deje mas arriba. Creo que alcanzaria con poner la funcion "distance_to_object" en un if para activar o desactivar el efecto de crear gente.
[/gml]
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: danielsanleo en Septiembre 01, 2011, 07:19:39 PM
lo siento pero no funciona, podrias ponerme un engine, perdon por las molestias, pero esque en gml no tengo ni idea. gracias
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: MaanuRP en Septiembre 01, 2011, 10:49:59 PM
Modifique algunas cosas del engine y te lo deje andando.

Lo que si, para que la personas no se creen en el mismo lugar, probe con el "place_free(xrandom,yrandom)" y no me funciona, tambien intente con "place_empty(xrandom,yrandom)" y tampoco funciona, por lo que tuve que hacer que al crearse, si colisionan consigo mismas, se mueven a una nueva posicion random, y me parece que se mueven las 2 instancias que colisionaron a una nueva ubicacion (Porque cree un objeto "Persona_General" y les puse a los 3 tipos de personas parent con este para que se comporten de la misma manera para poder hacer lo anterior) (Esto lo puedes modificar para que suceda lo que tu quieres, o si puedes encontrar la forma de ponerle un "If" al "alarm 0", que es donde se crean, para que directamente no se creen sobre los otros, seria lo mejor.

Otro dato es que no pude hacer que no se cree dentro de los, en este caso, 128 pixeles alrededor del personaje. Lo que hice fue que si se encuentra ahi dentro, se destruya.

Todo lo otro esta funcionando perfecto. En realidad, todo funciona perfecto, solo que hay cosas que se podrian controlar distinto para mejorar la grafica o la comodidad en los codigos.

Cualquier duda sobre el engine, pregunta :)




Para que veas otras cosas que se pueden hacer, en el objeto "Controlador", en el evento "Draw", te dejo un par de dibujos para que te sea mas facil saber algunos valores a la hora de probar el engine:

@Circulo negro que determina los 128 pixeles alrededor del Jugador (En este caso, el cuadrado azul).
@La distnacia del objeto "Persona" mas cercano al Jugador.
@La ID del mismo objeto que el anterior.
@El color del mismo objeto que el anterior
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: danielsanleo en Septiembre 02, 2011, 12:31:32 AM
muchisimas gracias, pero claro lo que pasa es que ahora la gente sale muuy lejos del jugador porque el mapa es muy grande, entonces habia pensado en como se haria para que la gente saliera en un perimetro cerca del jugador, y que segun se mueve el jugador la gente que sale fuera del perimetro se borra y perdon por las molestias
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: MaanuRP en Septiembre 02, 2011, 01:01:35 AM
Seguro que usas por lo menos un view, no?

Bueno, y cada view tiene sus propias variables de "y" & "x" por lo que debes cambiar:

Ve a la parte donde se crean las personas, especificamente donde esta lo que busca los valores aleatorios para darle el rango maximo de aparacion de objetos:

(Controlador --> Alarm 0 ---> Linea 2 y 3).


xrandom = random(room_width)
yrandom = random(room_height)


@Cambia "room_widht" por "view_wview"
@Cambia "room_height" por "view_hview"

Entonces te tendria que quedar en la linea 2 y 3 (Tambien cuenta la linea que se pone en verde, es una aclaracion, pero tambien la estoy contando)


xrandom = random(view_wview)
yrandom = random(view_hview)
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: danielsanleo en Septiembre 03, 2011, 01:50:43 AM
perdona pero ahora no me aparece gente, antes me aparecia gente lejos, pero ahore no me aparece nadie, podrias poner una engine, gracias
Título: Re: ?hacer que aparezca gente aleatoriamente?
Publicado por: MaanuRP en Septiembre 03, 2011, 03:45:32 AM
Tienes razon, eso no funciona, recien ahora me di cuenta.

No se me ocurre que hacerle, ahora me pongo a ver, y si se me ocurre algo, arreglo el engine y te lo dejo aca