:GM8:
hola ando haciendo mi juego 3d y ya he visto varios juegos en 3d (hechos en gm) en que los objetos a distancia del jugador no aparecen hasta que te acercas a ellos.


segun he sabido esto es para que un juego no se haga lento y que solo dibuje los objetos cercanos que si se van a usar o interactuar

habra un codigo en GML o un consejo para poder hacer esto y que mi juego no vaya lento (por que mi juego lo quiero hacer con demasiados objetos)

gracias.

Mi nuevo juego Infeccion
http://www.comunidadgm.org/index.php?topic=12886.0

Mi juego iluminacion
http://www.comunidadgm.org/index.php?topic=12843.0

Que hacer si tu antivirus te detecta un juego que has creado como virus?

http://www.comunidadgm.org/index.php?topic=12632.0

#1 Mayo 05, 2010, 11:15:14 PM Ultima modificación: Mayo 05, 2010, 11:25:27 PM por Ge
En el evento Draw, antes de dibujar, coloca el distance to object  :D .

if(distance_to_object(obj_Camara) < 512)
{
d3d_model_draw(PinoModelo,x,y,0,sprite_get_texture(spr_PinoTextura,0))    
}


En el ejemplo estoy dibujando un modelo, pero tambien funciona si estas dibujando cualquier otra cosa  8) .

Recorda poner al objeto que funciona como camara, o el objeto que funcione como el jugador. La distancia va a variar dependiendo de que escalas uses en el mundo  :P

Si probas con otras distancias, podes usar LODS de modo que ha cierta distancia podes poner un nuevo modelo con menos cantidad de vertices.

if(distance_to_object(obj_Camara) < 512)
{
d3d_model_draw(PinoModelo,x,y,0,sprite_get_texture(spr_PinoTextura,0))    
}
else
{
d3d_model_draw(PinoModeloLOD,x,y,0,sprite_get_texture(spr_PinoTextura,0))  
}


Espero que te sirva  ;D !

________

EDITO:  Para hacerlo aun mas exacto, esta este sctipt creado por Tristiano77, d3d_point_distance(x1,y1,z1,x2,y2,z2), detecta la cercania a?adiendo el eje Z

Link: http://gmc.yoyogames.com/index.php?showtopic=344960