hola a todos.
¿como tengo que ajustar el codigo de d3d para que la camara (objectcamera) siga al objeto jugador (object0) mirando hacia la direccion en la que valla este desde una perspectiva aereo-trasera del objeto tipo need for speed?
así (me pase un poco con la altura porque eso es un montaje en google skecthup)

Podría funcionar usando las funciones de lengthdir..

Xto = coche.x
Yto = coche.y
Zto = coche.z
// punto en el coche
Xfrom = lengthdir_x(100,coche.direccion-180)
Xfrom = lengthdir_x(100,coche.direccion-180)
// 100 pixeles por detrás del coche
Xfrom = coche.z+20
// 20 pixeles por detrás del coche
d3d_set_projection(Xto,Yto,Zto,Xfrom,Yfrom,Zfrom,0,0,1)
"Y cuando termines de hablar... te callas."


me sale esto:
Citar
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Draw Event
for object objectcamera:

Push :: Execution Error - Variable Get 0.z(100025, -1)
at gml_Object_objectcamera_DrawEvent_1 (line 5) -   d3d_set_projection(object0.x,object0.y,object0.z,lengthdir_x(100,object0.image_angle-180),lengthdir_x(100,object0.image_angle-180),object0.z+20,0,0,1,);
############################################################################################

Hola,

Ese error te sale porque el objeto "Object0" no tiene definida la variable "z", viendo el código de LowHertzs parece que está bien, pero creo que repitió las variables del Xfrom (y no puso las de Yfrom y Zfrom) entonces no te quedaría bien,

aquí te lo coloco corregido (solo son 3 letras cambiadas :P ):

[gml]
Xto = object0.x
Yto = object0.y
Zto = object0.z
// punto en el coche
Xfrom = lengthdir_x(100,object0.direction-180)
Yfrom = lengthdir_y(100,object0.direction-180)
// 100 pixeles por detrás del coche
Zfrom = coche.z+20
// 20 pixeles por detrás del coche
d3d_set_projection(Xto,Yto,Zto,Xfrom,Yfrom,Zfrom,0,0,1)
[/gml]

Recuerda poner en el evento create del coche lo siguiente:

[gml]
z = 0; //O el valor que quieras
[/gml]

y para que funcione bien, el carro lo debes girar cambiando la variable "direction" del object0, ya el resto es probar y cambiar cosas de acuerdo a tus necesidades.

Saludos 8)

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


#5 Marzo 28, 2014, 12:52:00 AM Ultima modificación: Marzo 28, 2014, 12:54:52 AM por ivn_eze
me funciona a medias. primero que no veo el sprite de objet 0 y segundo que por lo que parece (debere comprobarlo con el sprite puesto) la camara va al revez.
ademas ¿ como deberia hacer para suplantar el sprite por el de un auto en 3d que se ubique en las posiciones del anterior y gire en base a image_angle?

EDIT: y para poner las tiles que tenia en la room en 3d? es que el juego antes estaba en 2d y luego lo pase a 3d y antes los circuitos basicamente se componian de 50 tipos distintos de tiles y pues me da flojera cambiar todo

Hola.

Debes cargar un modelo "d3d_model_load" y luego dibujarlo aplicando transformaciones "d3d_transform.....", podría pasarte un código para que lo hicieses pero es mejor que experimentes por tu cuenta un tiempo para que entiendas como funciona.

en cuanto a los tiles, estos no funcionan muy bien con el 3D, puede que algunos te cuadren pero por lo general tienden a fallar, así que si quieres seguir debes hacerlo de manera manual (o no se si habrá alguna otra técnica)

Saludos 8)

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.