Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - Ares074

31
Ok, gracias con eso ya puedo continuar con el juego
32
Preguntas y respuestas / Re:Camara 3d D estilo yume niki 3d
Septiembre 07, 2017, 06:10:42 AM
Hola gracias ya quedo bastante bien ahora tengo una duda se puede animar el personaje si esta dibujado como modelo , daré el tema como solucionado gracias  :)
33
Preguntas y respuestas / Re:Camara 3d D estilo yume niki 3d
Septiembre 06, 2017, 09:17:19 PM
Hola la cámara funciona bien pero tienes razón se ve escalonado así que puse  el script de la pagina https://yal.cc/gamemaker-collision-line-point/
Asy lo puse en el evento end step de la cámara
  var r = collision_line_point(x, y, obj_player2.x, obj_player2.y, obj_colision, false, true);
//draw_line(x, y, r[1], r[2]);
if (r[0] == noone) break;
    else a -=1; //holds the nearest (hit) instance.


Cambie la variable r de distancia por a , la variable a para disminuir la distancia estaba en -10 la cambie a -1 el movimiento de la cámara se va mas suave por que disminuye mas lento lo que ase que al girar se mire algo lento no se si estoy implementando bien el script o se puede mejorar , segun la versiones de GMS de 1.4.1760 tienen la opción de fast collision system intente buscar una versión actualizada a ver si mejoraba pero no la encontré.
34
Preguntas y respuestas / Re:Camara 3d D estilo yume niki 3d
Septiembre 05, 2017, 02:03:39 AM
Hola gracias por ayudarme, tuve que cambiar la variable r <= 10 por 80 por que el personaje se mira muy cerca de la pantalla , no se si por eso no funciona bien la colisión con las paredes

Adjunte el archivo gmz  para que lo veas mejor ,igual también le sirve a alguien de ejemplo
35
Preguntas y respuestas / Re:Camara 3d D estilo yume niki 3d
Septiembre 04, 2017, 10:10:57 PM
Hola ya lo hice pero me sale error en Variable obj_player2.<unknown variable>(100010, -2147483648) not set before reading it.
at gml_Object_obCamara_DrawEvent_1 (line 34) - z = r*uz + obj_player2.z; //calcuar posicion faltante,  obj_player2 es el nombre de mi personaje
uw = lengthdir_x(1 ,elevacion);
ux = lengthdir_x(uw,direction);
uy = lengthdir_y(uw,direction);
uz = lengthdir_y(1 ,elevacion);

r = distancia;
c = true; //condicion

// repetir hasta que la linea que va de la camara al jugador este libre de
// colision, o se alcance la distancia minima entre la camara y el jugador
while( true ){
  //calcular posicion
  x = r*ux + obj_player2.x;
  y = r*uy + obj_player2.y;
 
  if( r <= 10 )break; //si se alcanza la distancia minima, terminar bucle
 
  c = collision_line(x,y, obj_player2.x,obj_player2.y, obj_pared,false,true);
  if( c == false )break; //si no hay colision, terminar bucle
  else r -= 10; //si hay colision, disminuir la distancia
}
z = r*uz + obj_player2.z; //calcuar posicion faltante
if( z > 50 )z = 50; //no colisionar con el techo
// Establecer proyeccion
d3d_set_projection( x,y,z, obj_player2.x,obj_player2.y,16, 0,0,1 );
draw_set_color( c_white );



dark_purple = make_colour_rgb(27,3,59);
d3d_set_fog(true,dark_purple,228,512)
36
Preguntas y respuestas / Re:Camara 3d D estilo yume niki 3d
Septiembre 03, 2017, 06:44:54 AM
Gracias creo que ya quedo solo me faltaría lo de las colisiones de las paredes con la cámara esperare el método  :)
Dejo una captura






Cita de: Clamud en Septiembre 02, 2017, 08:30:42 PM
Para dibujar el personaje se pueden usar varios métodos. Uno es dibujar con d3d_draw_wall:
[gml]
// calcular extremos
x1 = x + lengthdir_x(8, obCamara.direction + 90);
y1 = y + lengthdir_y(8, obCamara.direction + 90);
x2 = x + lengthdir_x(8, obCamara.direction - 90);
y2 = y + lengthdir_y(8, obCamara.direction - 90);
z1 = 0;
z2 = 16;

// dibujar plano
d3d_draw_wall( x1,y1,z1, x2,y2,z2, tex,1,1 );
[/gml]

Otro es usar un modelo y transformaciones:
[gml]
// Evento Create
// Modelo
mdl = d3d_model_create();
d3d_model_wall( mdl, 0,-8,0, 0,8,16, 1,1 );
[/gml]
[gml]
// Evento Draw
d3d_transform_set_rotation_z( obCamara.direction );
d3d_transform_add_translation( x,y,0 );
d3d_model_draw( mdl, 0,0,0, tex );
d3d_transform_set_identity();
[/gml]

Dejo un ejemplo adjunto. Camina con WASD, y con M se cambia entre los dos métodos.
37
Preguntas y respuestas / Re:Camara 3d D estilo yume niki 3d
Septiembre 01, 2017, 07:57:01 PM
Hola gracias por responder la cámara funciona bastante bien , pero como hago para que el personaje rote lo tenia programado para que solo se moviera con las teclas de direccion
sin rotar y ahora cuando muevo la cámara con el mouse pierdo de vista al personaje, el personaje lo dibujo con draw_wall


Cita de: Clamud en Septiembre 01, 2017, 04:16:44 PM
Crea dos objetos: el personaje y la cámara. El personaje es el punto de rotación y la cámara lo sigue. La cámara debe tener más profundidad (depth) que los otros objetos, para que la proyección 3D sea establecida antes de que los demás objetos comiencen a dibujar.

En el evento Create de la cámara inicia el modo 3D, coloca el mouse en el centro de la pantalla y define sus coordenadas esféricas relativas al personaje
https://es.wikipedia.org/wiki/Coordenadas_esf%C3%A9ricas
[gml]
// Iniciar 3D
d3d_start();
d3d_set_culling( true );
draw_set_color( c_white );

// Mouse en el centro de la pantalla
centro_h = display_get_width() / 2;
centro_v = display_get_height() / 2;
display_mouse_set( centro_h, centro_v );

// Coordenadas esfericas
direction = point_direction( obJugador.x,obJugador.y, x,y );
elevacion = 45;
distancia = 128;
[/gml]

En el evento Draw de la cámara calcula las coordenadas cartesianas a partir de las coordenadas esféricas y establece la proyección 3D
[gml]
// Coordenadas cartesianas
x =  lengthdir_x(distancia,elevacion) * lengthdir_x(1,direction) + obJugador.x;
y =  lengthdir_x(distancia,elevacion) * lengthdir_y(1,direction) + obJugador.y;
z = -lengthdir_y(distancia,elevacion) + 16;

// Proyeccion
d3d_set_projection( x,y,z, obJugador.x,obJugador.y,16, 0,0,1 );
[/gml]

En el evento Step de la cámara controla la posición de la cámara con el ratón
[gml]
// Controlar con raton
direction += (centro_h - display_mouse_get_x()) / 10;
elevacion += (display_mouse_get_y() - centro_v) / 10;
elevacion = median( 0, 89, elevacion );

// volver a colocar el mouse en el centro de la pantalla
display_mouse_set( centro_h, centro_v );
[/gml]

En Yume Nikki 3D la cámara detecta colisiones para que no pueda ver a través de las paredes. El sistema de colisión depende de cómo están definidas las paredes.
El personaje se mueve tomando en cuenta la posición de la cámara, después mostraré un método.
38
Hola quisiera saber como crear una cámara 3d que sea como la versión 3d del juego de Yume niki , se que es parecida a una cámara de fps pero no se como hacer el movimiento que tiene la cámara al mover el personaje