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 - Naitsabes0

406
Preguntas y respuestas / Re:dudirigilla :(
Mayo 07, 2017, 08:53:52 PM
Cita de: codarck en Mayo 07, 2017, 08:01:42 PM
hay una forma de  verificar si el mouse esta dentro o fuera del objeto, con codigos? sin necesidad de  el evento mouse??

lo dig porq hay  algunos eventos q se pueden reemplazar por  codigos xD  :(
Puedes usar el de colisión, aunque no es tan efectivo como este al momento de programar botones, y si he visto que con códigos se puede remplazar a cualquier evento, siempre y cuando seas un experto en programación, no es mi caso  :-[.
407
Cita de: MetalGore en Mayo 07, 2017, 07:54:14 PM
Hola, soy nuevo en esto de la programación de videojuegos y estoy siguiendo un tutorial en Youtube de "TheMontyDrake" sobre como hacer un juego de plataformas, he seguido bien los dos primeros videos pero ahora viene mi problema: Cuando salto y caigo al suelo se queda clavado el Personaje, un par de sprites o así, pero no siempre. He estado revisando mil veces el codigo que sale en el tutorial y lo tengo igual y en el video todo le va bien y a mi me se clava el Personaje >:(. Haber si alguien me puede ayudar.

Este es el codigo de movimiento del personaje, haber si alguien ve algún error, o puede que el error esté en otro sitio.


///Desplazamiento
var KeyLeft, KeyRight, KeyJump, KeyJumpRelease;

KeyLeft        = -keyboard_check (vk_left);
KeyRight       = keyboard_check (vk_right);

KeyJump        = keyboard_check_pressed(ord('X'));
KeyJumpRelease = keyboard_check_released(ord('X'));

//Comprobación de colisiones
intColLeft  = place_meeting(x - 1, y, objBlock);
intColRight = place_meeting(x + 1, y, objBlock); //Para que se pare cuando hay un Block
bolGround   = place_meeting (x, y + 1, objBlock); //Para saber si Player tiene un Block debajo

intMove = KeyLeft + KeyRight;

//Definir aceleración y fricción en función del medio
if (!bolGround)
{
    intTempAcc = intAirAcc;
    intTempFric = intAirFric;
}
else
{
    intTempAcc = intGroundAcc;
    intTempFric = intGroundFric;
}

//Velocidad horizontal
if (intMove != 0) intVX = scrApproach(intVX, intVXMax * intMove, intTempAcc);
else intVX = scrApproach(intVX, intVXMax * intMove, intTempFric);

//Velocidad Vertical
if (!bolGround)
{
    intVY = scrApproach(intVY, intVYMax, intGravityNorm); //Caída libre
}

//Salto
if (KeyJump && bolGround) intVY = -intVYMax;

//Colision horizontal (X)
repeat(abs(intVX))
{
    if (!place_meeting(x + sign(intVX), y, objBlock))
    {
        x += sign(intVX)
    }
    else
    {
        intVX = 0;
        break;
    }


//Colisión Vertical (Y)
repeat(abs(intVY))
{
    if (place_meeting(x, y + sign(intVX), objBlock))
    {
        intVY = 0;
        break;
    }
    else y += sign(intVY)
}



Gracias. Un saludo :)

Tambien he seguido sus tutoriales de plataformas, pero si el problema no esta en los códigos, puede ser en el sprite, ya que monty usa un personaje animado que cambia la posicion de sus pixeles por cada fotograma, también puede ser por la colisión que le has puesto al sprite o su centrado, yo ya termine sus tutoriales y hay que adaptar el sprite a sus códigos, buena suerte  ;).
408
Cita de: Alesxanderk en Mayo 07, 2017, 03:34:48 PM
Te dejo una imagen:
[spoiler]

[/spoiler]


Y el .gmz adjunto

Pues...



Solucionaste con un simple código un problema que me tuvo de los nervios por casi 1 semana  :o, gracias  :D.
409
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

y este es un hijo

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  :).
410
Cita de: wilodxd en Mayo 07, 2017, 02:45:49 AM
ha~ bueno... a mi me ha funcionado lo probe ~~ el problema es que no entiendes el codigo revisalo... solo estas copiando el codigo

es lo mismo que antes puse bueno suerte...
Por lo que veo en su imagen se sigue viendo igual de defectuosa como la mía  :-\, solo que el ejemplo no es un gif para apreciar los defectos, y si empece hace poco haber el tema de surface, por lo que no entiendo muy bien el código.
411
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)

2.- Crea una fuente de letra (en mi caso esto)

3.-Crea al objeto (en mi caso esto)

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:

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.
412
Como dato esto es lo mismo que hay en el post "Tengo un problema con los depth (profundidad)", solo que lleva de 4-5 días y todos los cambios fueron mal construidos, tal vez porque fueron de  :GM8: a pesar de que el problema es de  :GMS:, por lo que decidí empezarlo de 0 otra vez  :-\.

Ejemplo 1
Aquí hay cuadrados rojos pero no se ven. profundidad del cubo = 0 por defecto

Ejemplo 2
Aqui los cuadrados se ven incluso encima de la oscuridad. profundidad del cubo = -10

Mi problema es que no se porque los cubos no se dejan ver cuando la luz los alcanza, por lo que aumente su depth a -1 hasta llegar a -10 (10 intentos fallidos), pero esto solo provoco que los cuadrados se vieran por encima de la oscuridad y la luz.

La idea es que se comporte de la forma típica de los juegos, es decir esto.



Y claro mi código me hace ver todo o nada  :(.

Códigos:

obj_Oscuridad: Sin sprite profundidad 0 por defecto

DRAW:
///Dibuja la oscuridad
depth = -1; //ajusto la profundidad
draw_set_color(c_black)
draw_set_alpha(1) // 1 oscuro total 0.5 poco oscuro
draw_rectangle(view_xview[0]-2,view_yview[0]-
2,view_xview[0]+view_wview,view_yview[0]+view_hview,0)
draw_set_color(c_white)
draw_set_alpha(1)
//Esto es para hacer un rectángulo negro en la view.

obj_Personaje: cuadrado verde profundidad -2

DRAW:
///Creacion de la linterna
//para la apariencia de la linterna
draw_set_blend_mode(bm_add)
draw_sprite_ext(spr_Luz,0,x,y,5,5,45,c_white,0.2)
draw_sprite_ext(spr_Luz,0,x,y,1,1,0,c_white,1)
draw_set_blend_mode(bm_normal)

//para que se vea el personaje.
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle
,image_blend,image_alpha)

obj_Rojo: cuadrado rojo profundidad 0 en ejemplo 1 y -10 en ejemplo 2.

Sin codigo
413
Cita de: wilodxd en Mayo 07, 2017, 12:43:14 AM
Cita de: Naitsabes0 en Mayo 07, 2017, 12:06:44 AM
Cita de: wilodxd en Mayo 06, 2017, 10:48:03 PM
~~ ehm cambia eso por 'surface_reset_target(surf)' hay varios otros escritos...
y en draw rectangle es asi 'draw_rectangle(0,0,view_wview,view_hview,0);'
pff vamos pequeños detalles :P
e intenta entender el codigo , la idea es aprender como funciona no hacer copy/paste.

Vale estudie este código y lo deje así:

obj_Oscuridad
CREATE:
///Plana para dibujar
globalvar surf;
surf = surface_create(view_wview,view_hview);

STEP
///Oscuridad
//Plana de color negro
surface_set_target(surf);
draw_set_color(c_black);
draw_rectangle(0,0,view_wview,view_hview,0);
surface_reset_target();

//Objeto que ilumina
surface_set_target(surf);
draw_set_blend_mode(bm_subtract);
//aqui puede poner el sprite de alguna 'luz'
draw_sprite_ext(spr_Luz,0,x,y,5,5,45,c_white,0.2)
draw_circle(x-view_xview,y-view_yview,32,0);
surface_reset_target();

DRAW
///Dibuja la surface
if(surface_exists(surf)){
    draw_surface(surf,view_xview,view_yview);
}else{
    surf = surface_create(view_wview,view_hview);
}

obj_Personaje
DRAW
//para que se vea el personaje.
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,
image_yscale,image_angle,image_blend,image_alpha)

Resultado: ¿Colores invertidos  :o? no es lo que estoy buscando, pero se ve interesante  :).


Sin embargo se veo muy lejos a lo que estoy buscando desde que empece este post  :(.


jaajjajaja ops ~~
aqui
"

//Objeto que ilumina
surface_set_target(surf);
draw_set_blend_mode(bm_subtract);
//aqui puede poner el sprite de alguna 'luz'
draw_sprite_ext(spr_Luz,0,x,y,5,5,45,c_white,0.2)
draw_circle(x-view_xview,y-view_yview,32,0);
draw_set_blend_mode(bm_normal);///esta linea ~~ debes restablecer el 'blend'
surface_reset_target();

"
La verdad se ve así:



La luz esta sin moverse en un solo lugar con un tamaño super pequeño al original, ademas aparece un triangulo negro que oculta todo, la verdad creo que esto de surface no sirve para la linterna, ademas este código ya no se parece al original que tuve al empezar el video.
414
Cita de: wilodxd en Mayo 06, 2017, 10:48:03 PM
~~ ehm cambia eso por 'surface_reset_target(surf)' hay varios otros escritos...
y en draw rectangle es asi 'draw_rectangle(0,0,view_wview,view_hview,0);'
pff vamos pequeños detalles :P
e intenta entender el codigo , la idea es aprender como funciona no hacer copy/paste.

Vale estudie este código y lo deje así:

obj_Oscuridad
CREATE:
///Plana para dibujar
globalvar surf;
surf = surface_create(view_wview,view_hview);

STEP
///Oscuridad
//Plana de color negro
surface_set_target(surf);
draw_set_color(c_black);
draw_rectangle(0,0,view_wview,view_hview,0);
surface_reset_target();

//Objeto que ilumina
surface_set_target(surf);
draw_set_blend_mode(bm_subtract);
//aqui puede poner el sprite de alguna 'luz'
draw_sprite_ext(spr_Luz,0,x,y,5,5,45,c_white,0.2)
draw_circle(x-view_xview,y-view_yview,32,0);
surface_reset_target();

DRAW
///Dibuja la surface
if(surface_exists(surf)){
    draw_surface(surf,view_xview,view_yview);
}else{
    surf = surface_create(view_wview,view_hview);
}

obj_Personaje
DRAW
//para que se vea el personaje.
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,
image_yscale,image_angle,image_blend,image_alpha)

Resultado: ¿Colores invertidos  :o? no es lo que estoy buscando, pero se ve interesante  :).


Sin embargo se veo muy lejos a lo que estoy buscando desde que empece este post  :(.
415
Cita de: wilodxd en Mayo 06, 2017, 06:07:43 PM
Cita de: Naitsabes0 en Mayo 06, 2017, 04:49:06 AM
Cita de: wilodxd en Mayo 06, 2017, 03:13:26 AM
si quieres crear un sistema de iluminacion, ocupa 'surfaces' ~~

Las habría ocupado antes de hacer este post si supiera como crearlas bien para el juego que hago, pero como no logre armarlo bien, empece con este código, ademas los ejemplos hispanos son de  :GM8: y unos pocos ingleses de  :GMS:. 

comienza creando una 'surface'
-en el event create del 'obj_oscuridad'-
"
globalvar surf;
surf = surface_create(view_wview,view_hview);
"

bien esto es para tener una 'plana' para dibujar
ahora dibujaremos en ella
-en el evento step del 'obj_oscuridad'-
"
surface_set_target(surf);
draw_set_color(c_black);
draw_rectangle(0,0,view_wview,view_hview);
surface_reset();
"
bien ya tenemos la plana de color negro ahora hay que borrar o hacer nuestras luces
-en el objeto que iluminara en el evento step-
"
surface_set_target(surf);
draw_set_blend_mode(bm_subtract);
//aqui puede poner el sprite de alguna 'luz'
draw_circle(x-view_xview,y-view_yview,32,0);
surface_reset_target();
"
finalmente dibujamos la surfaces en pantalla
-en el 'obj_oscuridad' en el evento draw-
"
if(surface_exists(surf)){
    draw_surface(surf,view_xview,view_yview);
}else{
    surf = surface_create(view_wview,view_hview);
}
"
bien pruebalo,no lo he probado pero deberia funcionar.
Esta mal escrito



Ademas tiene lineas rojas



Se agradece la intención  :), pero este quedo peor que todos los anteriores mencionados, ya que ni siquiera se puede abrir el juego  :(, no es por ser cómodo pero ¿no cree que debería comprobar si la información enviada funciona?
416
Cita de: wilodxd en Mayo 06, 2017, 03:13:26 AM
si quieres crear un sistema de iluminacion, ocupa 'surfaces' ~~

Las habría ocupado antes de hacer este post si supiera como crearlas bien para el juego que hago, pero como no logre armarlo bien, empece con este código, ademas los ejemplos hispanos son de  :GM8: y unos pocos ingleses de  :GMS:. 
417
Cita de: Alesxanderk en Mayo 06, 2017, 01:16:37 AM
Intenta con el codigo cambiado de esta forma:

obj_Oscuridad -  Sin sprite profundidad -1
[gml]
///Draw Event

///Dibuja la oscuridad
depth = -1; //ajusto la profundidad
draw_set_color(c_black)
draw_set_alpha(1) // 1 oscuro total 0.5 poco oscuro
draw_rectangle(view_xview[0]-2,view_yview[0]-
2,view_xview[0]+view_wview,view_yview[0]+view_hview,0)
draw_set_color(c_white)
draw_set_alpha(1)
//Esto es para hacer un rectángulo negro en la view.

///Creación de la linterna
//para la apariencia de la linterna
draw_set_blend_mode(bm_add)
draw_sprite_ext(spr_Luz,0,x,y,5,5,45,c_white,0.2)
draw_sprite_ext(spr_Luz,0,x,y,1,1,0,c_white,1)
draw_set_blend_mode(bm_normal)
[/gml]

obj_Personaje - cuadrado verde profundidad 0.
[gml]
//para que se vea el personaje.
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha)
[/gml]

obj_Rojo - cuadrado rojo profundidad 0.

Su código provoca el siguiente efecto.



No se que pasa, pero veo que su código destruye al jugador y a los cuadrados rojos, ni el propio jugador puede moverse con este nuevo código ¿seguro/a que su respuesta es para  :GMS:? porque no funciona  :-\.
418
Cita de: DeeY en Mayo 05, 2017, 11:38:46 PM
Vuelve a dejar bm_add

Con ese consejo queda así



Con cada cambio que me dice que aga se veo peor que la original ¿seguro que sabe como hacer o solucionar este problema? parece mas complicado de lo que pensaba  :(.
419
Cita de: DeeY en Mayo 05, 2017, 06:29:09 AM
Cambia bm_add a bm_subtract

Y añade esto debajo de draw_set_blend_mode(bm_add);

draw_clear(c_white);

EDITO: Adjunto un ejemplo de luces del cual hice un port para Game Maker: Studio

Asi es como se ve en los 2 ejemplos.

Ejemplo 1


Ejemplo 2


Así quedaron los códigos:

obj_Oscuridad: Sin sprite profundidad 0 por defecto

DRAW:
///Dibuja la oscuridad
depth = -1; //ajusto la profundidad
draw_set_color(c_black)
draw_set_alpha(1) // 1 oscuro total 0.5 poco oscuro
draw_rectangle(view_xview[0]-2,view_yview[0]-
2,view_xview[0]+view_wview,view_yview[0]+view_hview,0)
draw_set_color(c_white)
draw_set_alpha(1)
//Esto es para hacer un rectángulo negro en la view.

obj_Personaje: cuadrado verde profundidad -2

DRAW:
///Creacion de la linterna
//para la apariencia de la linterna
//draw_set_blend_mode(bm_add)
draw_set_blend_mode(bm_subtract)
draw_clear(c_white)
draw_sprite_ext(spr_Luz,0,x,y,5,5,45,c_white,0.2)
draw_sprite_ext(spr_Luz,0,x,y,1,1,0,c_white,1)
draw_set_blend_mode(bm_normal)

//para que se vea el personaje.
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle
,image_blend,image_alpha)

obj_Rojo: cuadrado rojo profundidad 0 en ejemplo 1 y -10 en ejemplo 2.

Sin codigo

Solo se invirtieron los colores (tonalidades), el problema todavía persiste, incluso queda peor que antes  :-\.
420
Resulta que logre resolver de cierta forma mi problema:

Ejemplo 1
Aquí hay cuadrados rojos pero no se ven. profundidad del cubo = 0 por defecto

Ejemplo 2
Aqui los cuadrados se ven incluso encima de la oscuridad. profundidad del cubo = -10

Mi problema es que no se porque los cubos no se dejan ver cuando la luz los alcanza, por lo que aumente su depth a -1 hasta llegar a -10 (10 intentos fallidos), pero esto solo provoco que los cuadrados se vieran por encima de la oscuridad y la luz.

La idea es que se comporte de la forma típica de los juegos, es decir esto.



Y claro mi código me hace ver todo o nada  :(.

Códigos:

obj_Oscuridad: Sin sprite profundidad 0 por defecto

DRAW:
///Dibuja la oscuridad
depth = -1; //ajusto la profundidad
draw_set_color(c_black)
draw_set_alpha(1) // 1 oscuro total 0.5 poco oscuro
draw_rectangle(view_xview[0]-2,view_yview[0]-
2,view_xview[0]+view_wview,view_yview[0]+view_hview,0)
draw_set_color(c_white)
draw_set_alpha(1)
//Esto es para hacer un rectángulo negro en la view.

obj_Personaje: cuadrado verde profundidad -2

DRAW:
///Creacion de la linterna
//para la apariencia de la linterna
draw_set_blend_mode(bm_add)
draw_sprite_ext(spr_Luz,0,x,y,5,5,45,c_white,0.2)
draw_sprite_ext(spr_Luz,0,x,y,1,1,0,c_white,1)
draw_set_blend_mode(bm_normal)

//para que se vea el personaje.
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle
,image_blend,image_alpha)

obj_Rojo: cuadrado rojo profundidad 0 en ejemplo 1 y -10 en ejemplo 2.

Sin codigo