Estaba pensando en hacer un diálogo de la siguiente manera: creo un objeto que es la caja de diálogo, y después creo un script para añadir un texto a la caja de diálogo. Mi duda es, ¿es recomendable hacerlo de esta manera? ¿me recomiendan otra manera de hacerlo?
Quiero sacarme de dudas de una vez cual sería una manera óptima de hacer un script de diálogos, para no lamentarme luego.
Cita de: Raiden en Mayo 07, 2017, 12:18:37 AM
Estaba pensando en hacer un diálogo de la siguiente manera: creo un objeto que es la caja de diálogo, y después creo un script para añadir un texto a la caja de diálogo. Mi duda es, ¿es recomendable hacerlo de esta manera? ¿me recomiendan otra manera de hacerlo?
Quiero sacarme de dudas de una vez cual sería una manera óptima de hacer un script de diálogos, para no lamentarme luego.
Yo le recomiendo usar sprite y objetos de la siguiente forma:
1.- Crea los sprite (en mi caso esto)
(https://i.gyazo.com/5404f0239d24bcc2b260bfa192fde4cb.gif)
2.- Crea una fuente de letra (en mi caso esto)
(https://i.gyazo.com/92fe34c2c9004bdbbb122e20c6888d58.gif)
3.-Crea al objeto (en mi caso esto)
(https://i.gyazo.com/538443c5d99e30cdce6baa3bb651b5c1.gif)
4.-Programalo (en mi caso esto)
CREATE
/// Variables
event_inherited(); // heredar del padre las colisiones
pagina = 0; // contador de pagina actual
paginas[0] = ""; // arreglo de páginas
mostrar = false; // mostrar cartel por defecto
pagina = -1; // página actual, -1 = inactivo
image_speed =0.1;
STEP
/// Detectar si jugador abre el cartel
if (keyboard_check_pressed(ord('Z')) and distance_to_object(objJugador)<3) {
mostrar = true;
}
// Si se aleja cerramos el cartel y reiniciamos pagina
if (distance_to_object(objJugador)>3) { mostrar = false; pagina = -1; }
/// Detectar si jugador pasa página
if (keyboard_check_pressed(ord('Z')) and mostrar) {
// Pasar página
if (pagina+1 < array_length_1d(paginas)) pagina++;
else {
// Si nos pasamos del máximo reiniciamos el cartel
mostrar = false;
pagina = -1;
}
}
END STEP: Esto es simplemente luz no ayuda al codigo
DRAW GUI
/// Comprobar si el jugador está cerca
if(mostrar){
draw_sprite(spr_HUD_Texto,0,0,32);
draw_set_font(f_Texto);
draw_set_valign(fa_center);
draw_set_valign(fa_archive);
draw_set_color(c_black);
draw_text(224,48,paginas[pagina]);
draw_set_color(c_white);
draw_text(223,47,paginas[pagina]);
}
Vaz a creacion code del personaje o letrero en este caso, y le pones esto:
(https://i.gyazo.com/a255f7c992a7cbec675742191edbb4f5.gif)
Cada pagina
- le debes sumar 1 para nueva ventana de dialogo y lo que escribas lo pones entre "".
Nota: Los valores fueron hechos y ajustados a las dimensiones de mi juego, deberás buscar tus propios valores.
Gracias. ¿Es posible hacer un objeto (obj_dialogos) y luego, a los demás objetos, hacerlos parent de este? lo intenté y no me dejaba crearle eventos al otro objeto, me daba error y no sé porqué.
Cita de: Raiden en Mayo 07, 2017, 03:17:15 PM
Gracias. ¿Es posible hacer un objeto (obj_dialogos) y luego, a los demás objetos, hacerlos parent de este? lo intenté y no me dejaba crearle eventos al otro objeto, me daba error y no sé porqué.
Si se fija mi letrero es padre
(https://i.gyazo.com/538443c5d99e30cdce6baa3bb651b5c1.gif)
y este es un hijo
(https://i.gyazo.com/0873afc74d445228d2cb2b93190579c5.gif)
Ignora el END STEP
DRAW GUI
/// Comprobar si el jugador está cerca
event_inherited();
if(mostrar){
draw_sprite(spr_HUD_Texto,10,0,32);
draw_set_font(f_Texto);
draw_set_valign(fa_center);
draw_set_valign(fa_archive);
draw_set_color(c_black);
draw_text(224,48,paginas[pagina]);
draw_set_color(c_white);
draw_text(223,47,paginas[pagina]);
}
No se mucho de esto, pero se lo suficiente para que funcione en el juego :).