Estoy desarrollando un juego en 3D que transcurre en unas islas, por lo tanto tengo que crear playas.
La playa se compone de 9 objects diferentes de arena, con los siguientes c?digos:
BLOQUE DE ARENA CENTRO
[gml]d3d_draw_floor(x-4,y-4,-8,x+4,y+4,-8,background_get_texture(bg_arena),1,1)[/gml]
BLOQUE DE ARENA NORTE
[gml]d3d_transform_set_identity()
d3d_transform_add_rotation_z(-270)
d3d_transform_add_translation(x,y,0)
d3d_draw_floor(-4,-4,-8,+4,+4,-16,background_get_texture(bg_arena),1,1)
d3d_transform_set_identity()
d3d_draw_wall(x-4,y-4,-16,x+4,y-4,-24,background_get_texture(bg_arena),1,1)[/gml]
BLOQUE DE ARENA NORESTE
[gml]draw_set_color(c_white)
d3d_transform_set_identity()
d3d_transform_add_rotation_z(-45-180)
d3d_transform_add_translation(x-1,y+1,0)
d3d_model_draw(model_maaaaa,0,0,-16,background_get_texture(bg_arena))
d3d_transform_set_identity()
d3d_draw_wall(x-4,y-4,-16,x+4,y+4,-24,background_get_texture(bg_arena),1,1)
[/gml]
BLOQUE DE ARENA ESTE
[gml]d3d_transform_set_identity()
d3d_transform_add_rotation_z(0)
d3d_transform_add_translation(x,y,0)
d3d_draw_floor(-4,-4,-8,+4,+4,-16,background_get_texture(bg_arena),1,1)
d3d_transform_set_identity()
d3d_draw_wall(x+4,y-4,-16,x+4,y+4,-24,background_get_texture(bg_arena),1,1)[/gml]
BLOQUE DE ARENA SURESTE
[gml]draw_set_color(c_white)
d3d_transform_set_identity()
d3d_transform_add_rotation_z(-45+90)
d3d_transform_add_translation(x-1,y-1,0)
d3d_model_draw(model_maaaaa,0,0,-16,background_get_texture(bg_arena))
d3d_transform_set_identity()
d3d_draw_wall(x-4,y+4,-16,x+4,y-4,-24,background_get_texture(bg_arena),1,1)[/gml]
BLOQUE DE ARENA SUR
[gml]d3d_transform_set_identity()
d3d_transform_add_rotation_z(-90)
d3d_transform_add_translation(x,y,0)
d3d_draw_floor(-4,-4,-8,+4,+4,-16,background_get_texture(bg_arena),1,1)
d3d_transform_set_identity()
d3d_draw_wall(x-4,y+4,-16,x+4,y+4,-24,background_get_texture(bg_arena),1,1)[/gml]
BLOQUE DE ARENA SUROESTE
[gml]draw_set_color(c_white)
d3d_transform_set_identity()
d3d_transform_add_rotation_z(-45)
d3d_transform_add_translation(x+1,y-1,0)
d3d_model_draw(model_maaaaa,0,0,-16,background_get_texture(bg_arena))
d3d_transform_set_identity()
d3d_draw_wall(x-4,y-4,-16,x+4,y+4,-24,background_get_texture(bg_arena),1,1)[/gml]
BLOQUE DE ARENA OESTE
[gml]d3d_transform_set_identity()
d3d_transform_add_rotation_z(180)
d3d_transform_add_translation(x,y,0)
d3d_draw_floor(-4,-4,-8,+4,+4,-16,background_get_texture(bg_arena),1,1)
d3d_transform_set_identity()
d3d_draw_wall(x-4,y-4,-16,x-4,y+4,-24,background_get_texture(bg_arena),1,1)[/gml]
BLOQUE DE ARENA NOROESTE
[gml]draw_set_color(c_white)
d3d_transform_set_identity()
d3d_transform_add_rotation_z(-45+270)
d3d_transform_add_translation(x+1,y+1,0)
d3d_model_draw(model_maaaaa,0,0,-16,background_get_texture(bg_arena))
d3d_transform_set_identity()
d3d_draw_wall(x-4,y+4,-16,x+4,y-4,-24,background_get_texture(bg_arena),1,1)[/gml]
SCRIPT PARA DIAGONALES
[gml]model_maaaaa = d3d_model_create();
d3d_model_primitive_begin(model_maaaaa,4.0000);
d3d_model_vertex_normal_texture(model_maaaaa,-7.0000,1.0000,-1.0000,0.0000,0,0,1.0000,1.0000);
d3d_model_vertex_normal_texture(model_maaaaa,7.0000,1.0000,-1.0000,0.0000,0,0,1.0000,1.0000);
d3d_model_vertex_normal_texture(model_maaaaa,0.0000,-4.0000,8.0000,0.0000,0,0,1.0000,1.0000);
d3d_model_primitive_end(model_maaaaa);[/gml]
Al final la playa queda as?:
(http://www.dfgames.x10.mx/PId_ss1.PNG)
(http://www.dfgames.x10.mx/PId_ss3.PNG)
(http://www.dfgames.x10.mx/PId_ss4.PNG)
Como veis, en las dos primeras im?genes las playas tienen "agujeros" y no se me ocurre c?mo rellenarlos (ya que en la tercera imagen no se necesita ning?n apa?o m?s)
No e podido ver las im?genes desde la escuela (y tampoco e profundizado mucho en el c?digo), pero el error me suena.
De que tama?o es la textura que intentas usar?
En algunas computadoras game maker no muestra las texturas de manera correcta a menos que los archivos sean cuadrados de alg?n m?ltiplo de 16 (16*16, 32*32, 64*64 etc) e incluso algunas veces esos se ven mal, tienes que comprimir la textura.
Perd?n si ese no es el problema pero es lo que me suele pasar a mi con el 3D de game maker.
Ya veo las im?genes, olvida que comente :-[
Creo que est?s intentando hacer conexiones con solo un tri?ngulo. Cuando la isla solo tiene un borde, como en la ?ltima screen, no pasa nada, pero si el borde se alarga hay que a?adir un tri?ngulo arriba que haga de conexi?n.
(http://i655.photobucket.com/albums/uu271/DazLog/cgm_explicacion.png)
En el 1, est? lo que tienes actualmente. En el 2, es lo que debes hacer. Como veo que usas un modelo, no puedo editarte el c?digo por mi cuenta (No s? como es el modelo, y usas transformaciones). Pero, al menos, ah? tienes la idea de lo que falla.
Entonces lo que tengo que hacer para tener el segundo tri?ngulo es girar el anterior, ?no?
?C?mo se hace?
Cita de: DarkFenix en Mayo 02, 2011, 05:07:36 PM
Entonces lo que tengo que hacer para tener el segundo tri?ngulo es girar el anterior, ?no?
?C?mo se hace?
No hay que girar nada, ser?a mejor dibujar otro tri?ngulo al lado del que ya tienes. Igual que est?s dibujando el tri?ngulo para las partes diagonales de la isla, solo que cambiando las coordenadas. No entiendo muy bien las coordenadas que est?s usando en ese c?digo (?Por qu? pones decimales si no los est?s usando realmente?) pero te pongo un ejemplo de un tri?ngulo de 16x16:
(http://i655.photobucket.com/albums/uu271/DazLog/cgm_explicacion2.png)
El punto amarillo ser?a el
primer punto, el punto rojo ser?a el
segundo punto, y el punto azul ser?a el
tecer punto del tri?ngulo.
Si tienes este script:
model_maaaaa = d3d_model_create();
d3d_model_primitive_begin(model_maaaaa,4.0000);
d3d_model_vertex_normal_texture(model_maaaaa,-7,1,-1,0,0,0,1,1);
d3d_model_vertex_normal_texture(model_maaaaa,7,1,-1,0,0,0,1,1);
d3d_model_vertex_normal_texture(model_maaaaa,0,-4,8,0,0,0,1,1);
d3d_model_primitive_end(model_maaaaa);Consistir?a en ir cambiando los valores
x,
y,
z de esos "d3d_model_vertex_normal_texture".
Siento no poder explicarme mejor, pero espero que captes la idea.