Hola. Tengo un problema con un juego 3D, lo que pasa es que
la etapa es en 3D pero el personaje es 2D y cuando pongo
luz todos los sprites 2D se ven negro, como hago para que el
sprite se vea normal???, el sprite esta echo en un evento draw,
tengo GM8


Antes que nada tendrias que fijarte si estas colocando correctamente:
[gml]draw_set_color(c_white)
draw_set_alpha(1)
[/gml]
Despu?s, coincido con vos en que el Game Maker, no le otorga iluminaci?n a los sprites, ya que la iluminaci?n es por v?rtices, y los sprites no tienen v?rtices (Por que "T?cnicamente" el uso de sprites no corresponde al uso correcto del 3d).

En todo caso, se soluciona f?cil. En el caso de que la c?mara sea de angulo fijo, la soluci?n mas simple es representar al sprite como un plano (Coloc?ndole como textura la misma imagen que el sprite). En el caso de que la c?mara sea de angulo cambiante, al plano vas a tener que girarlo constantemente para que siempre este mirando a la camara.

Okey, para dibujar un sprite en un plano, en el evento draw:
[gml]ttt = sprite_get_texture(sprite_index,image_index)
d3d_draw_wall(x-16,y,0,x+16,y,32,ttt,1,1)[/gml]
Simplemente lo que estoy dibujando es una pared, con el sprite y su subimagen correcta. Dependiendo del angulo de tu c?mara en otros casos quiz?s tendr?as que usar d3d_draw_floor, o d3d_draw_block .

En el caso de que la c?mara sea de angulo cambiante tendr?as que ser algo as?, de igual manera no se cuales son los ?ngulos de tu c?mara, as? que tendr?as que ir modificando los valores para hacer que coincidan correctamente, los valores a modificar son +90 o -180

[gml]d3d_transform_set_identity();
d3d_transform_add_rotation_x(point_direction(x,0,obj_camara.x,0)+90);
d3d_transform_add_rotation_y(point_direction(0,y,0,obj_camara.y)-180);
d3d_transform_add_rotation_z(0);
d3d_transform_add_translation(x,y,0);

ttt = sprite_get_texture(sprite_index,image_index)
d3d_draw_wall(-16,0,0,+16,0,32,ttt,1,1)

d3d_transform_set_identity();[/gml]
Lo que hace este script es girar los ?ngulos x,y,z de la pared, para que siempre este mirando a la c?mara.


:-[ , Espero que no te pierdas y suerte.
si te explique cualquier cosa, avisame  XD


Gracias, ya no se ve negro y me falto poner esto
[gml]draw_set_alpha(1)[/gml]
y use este codigo
[gml]ttt = sprite_get_texture(sprite_index,image_index)
d3d_draw_wall(x-16,y,0,x+16,y,32,ttt,1,1)[/gml]

pero sigo tendiendo un problema mi juego es de
plataformas 3D y con el c?digo de "draw_wall" mi personaje
se dibuja como una linea, como lo puedo modificar para que
se ponga normal?, mi c?mara es fija.

Ahhh, es de plataformas en 3d
en ese caso tendr?as que usar d3d_draw_block o usar:

[gml]d3d_transform_set_identity();
d3d_transform_add_rotation_x(90);
d3d_transform_add_rotation_y(180);
d3d_transform_add_rotation_z(0);
d3d_transform_add_translation(x,y,0);

ttt = sprite_get_texture(sprite_index,image_index)
d3d_draw_wall(-16,0,0,+16,0,32,ttt,1,1)

d3d_transform_set_identity();[/gml]

este script es similar al otro, solo que ahora los valores 90 y 180 estan fijos. Intenta combinar diferentes valores para ir encontrando el angulo correcto para que no se vea como una linea

:-[

No se me hab?a ocurrido use el d3d_draw_block()
con profundidad -1 y se ve plano, muchas gracias Ge
me sirvi? mucho.