Recordé la demo "Tile Based Platformer" que se descarga usando GMS (ve la imagen adjunta), ahí aparece un método que utiliza varios ds_queue para almacenar los valores de sprite y posición. Lo malo es que no tiene muchos comentarios en el código.
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.
542
Preguntas y respuestas / Re:PERSONAJE QUE SIGA AL PLAYER
Septiembre 24, 2017, 06:59:41 PM
Hay juegos en los que han solucionado esos problemas de forma muy sencilla, como en Portrait of Ruin: el personaje secundario repite los movimientos del personaje principal con un retardo de pocos frames, y si no puede saltar un obstáculo o queda atrapado, simpelente aparece cerca del personaje principal después de un tiempo.
543
Preguntas y respuestas / Re:[3D] Enorme ralentización al implantar iluminación, y en general
Septiembre 24, 2017, 06:46:06 PM
Si los polígonos no necesitan una sombra con gradiente puedes desactivarla con esta función
[gml]
d3d_set_shading(false)
[/gml]
[gml]
d3d_set_shading(false)
[/gml]
544
Preguntas y respuestas / Re:Necesito que el enemigo dispare varias veces.
Septiembre 24, 2017, 06:37:10 PM
Si la imagen 13 es la última en el sprite puedes usar el evento Animation End
[gml]
// Evento Animation End
instance_create(x,y,obj_bullet2);
[/gml]
o cambia el código de esta forma
[gml]
if( image_index >= 13 and image_index < 13+image_speed ){
instance_create(x,y,obj_bullet2);
}
[/gml]
[gml]
// Evento Animation End
instance_create(x,y,obj_bullet2);
[/gml]
o cambia el código de esta forma
[gml]
if( image_index >= 13 and image_index < 13+image_speed ){
instance_create(x,y,obj_bullet2);
}
[/gml]
545
Preguntas y respuestas / Re:[3D] Enorme ralentización al implantar iluminación, y en general
Septiembre 23, 2017, 06:17:32 PM
Para ver exactamente qué está causando la baja de fps puedes correr el juego en modo de depuración y hacer un "profile".
Creo que el principal problema es que se usan varios planos para una sola cara, ¿no se puede usar un solo plano y cambiarle la textura?
Lo mejor es no usar las funciones d3d_draw_block, d3d_draw_floor, d3d_draw_wall y d3d_primitive_begin. Es más eficiente crear un modelo al inicio del juego y que todos los cubos usen el mismo modelo. Si varios personajes son del mismo tamaño también puedes crear un modelo plano para todos ellos.
Otra cosa que puedes hacer es organizar las texturas para que se realicen el menor número de cambios de textura. Ve a Global Game Settings, selecciona la pestaña Windows, luego la pestaña Graphics y presiona el botón Preview. Si solo hay una página de textura no hay que preocuparse.
Creo que el principal problema es que se usan varios planos para una sola cara, ¿no se puede usar un solo plano y cambiarle la textura?
Lo mejor es no usar las funciones d3d_draw_block, d3d_draw_floor, d3d_draw_wall y d3d_primitive_begin. Es más eficiente crear un modelo al inicio del juego y que todos los cubos usen el mismo modelo. Si varios personajes son del mismo tamaño también puedes crear un modelo plano para todos ellos.
Otra cosa que puedes hacer es organizar las texturas para que se realicen el menor número de cambios de textura. Ve a Global Game Settings, selecciona la pestaña Windows, luego la pestaña Graphics y presiona el botón Preview. Si solo hay una página de textura no hay que preocuparse.
546
Preguntas y respuestas / Re:Aislar caracteres en una variable
Septiembre 23, 2017, 06:00:52 PM
Si la variable es una cadena puedes hacer esto
[gml]
variable1 = "A0012";
n = string_lenght(varaible1); //numero de caracteres
variable2 = string_copy(variable1, n-1, 2); //copiar ultimos 2 caracteres
[/gml]
[gml]
variable1 = "A0012";
n = string_lenght(varaible1); //numero de caracteres
variable2 = string_copy(variable1, n-1, 2); //copiar ultimos 2 caracteres
[/gml]
547
Preguntas y respuestas / Re:Girar la dirección al lado contrario[Solucionado]
Septiembre 20, 2017, 04:47:47 PM
Restar también funciona.
548
Preguntas y respuestas / Re:Objetos fuera de la view
Septiembre 17, 2017, 05:21:13 PM
Las instancias permanecen aunque no sean visibles, a menos que se use la función instance_deactivate_region.
549
Preguntas y respuestas / Re:ayuda con este extrañisimo error
Septiembre 16, 2017, 03:35:08 PM
Según lo poco que leí, ese error indica que se está accediendo a un espacio de memoria restringida, pero tiene muchas causas.
Tal vez hay un punto en el juego en el que se alcanza el límite de RAM asignada. Usa el debugger para ver el uso de memoria.
Tal vez hay un punto en el juego en el que se alcanza el límite de RAM asignada. Usa el debugger para ver el uso de memoria.
550
Preguntas y respuestas / Re:¿Cómo puedo hacer que mi personaje gire su sprite mientras está en el aire?
Septiembre 13, 2017, 03:24:50 AM
Muestra el código o DnD que usas.
551
Preguntas y respuestas / Re:Duda sobre efecto al recibir daño
Septiembre 13, 2017, 03:22:48 AM
El efecto es parecido a la "aberración cromática". Se puede hacer con un shader, busca en el mercado de Yoyo:
https://marketplace.yoyogames.com/assets/3347/simple-glitch-shader
https://marketplace.yoyogames.com/assets/5728/bktglitch
https://marketplace.yoyogames.com/assets/3046/chromatic-aberration-shader
https://marketplace.yoyogames.com/assets/701/crt-pixel-shader
https://marketplace.yoyogames.com/assets/3347/simple-glitch-shader
https://marketplace.yoyogames.com/assets/5728/bktglitch
https://marketplace.yoyogames.com/assets/3046/chromatic-aberration-shader
https://marketplace.yoyogames.com/assets/701/crt-pixel-shader
552
Preguntas y respuestas / Re:surface se destruye al entrar en segundo plano
Septiembre 11, 2017, 07:53:04 PM
Puedes crear un buffer para copiar la surface cada cierto tiempo y recuperarla si se ha borrado.
El tamaño del buffer debe ser la multiplicación de las dimensiones de la surface x 4 (cada pixel de la surface ocupa 4 bytes).
[gml]
sf = surface_create( w, h );
bf = buffer_create( 200*150*4, buffer_fast, 1 );
[/gml]
Después de cada trazo o en una Alarma copia la surface.
[gml]
buffer_get_surface( bf, sf, 0,0,0 );
[/gml]
Si la surface se borra, vuleve a crearla.
[gml]
if not surface_exists(sf){
sf = surface_create(w,h);
buffer_set_surface( bf,sf, 0,0,0 );
}
[/gml]
El tamaño del buffer debe ser la multiplicación de las dimensiones de la surface x 4 (cada pixel de la surface ocupa 4 bytes).
[gml]
sf = surface_create( w, h );
bf = buffer_create( 200*150*4, buffer_fast, 1 );
[/gml]
Después de cada trazo o en una Alarma copia la surface.
[gml]
buffer_get_surface( bf, sf, 0,0,0 );
[/gml]
Si la surface se borra, vuleve a crearla.
[gml]
if not surface_exists(sf){
sf = surface_create(w,h);
buffer_set_surface( bf,sf, 0,0,0 );
}
[/gml]
553
Preguntas y respuestas / Re:¿Cómo puedo hacer que mi personaje gire su sprite mientras está en el aire?
Septiembre 11, 2017, 07:31:25 PM
En la ventana de propiedades del sprite presiona el botón "Center", para centrar el origen del sprite.
Debes poner gravedad para que no se quede en el aire.
Debes poner gravedad para que no se quede en el aire.
554
Preguntas y respuestas / Re:¿Cómo puedo hacer que mi personaje gire su sprite mientras está en el aire?
Septiembre 10, 2017, 07:18:55 PM
Mejor usa GML, es más rápido programar que en DnD.
Encontré un método de girar como en Geometrý Dash. Es importante no girar la caja de colisión (no modificar image_angle) para no complicar las colisiones, lo mismo se hace en GD.
Evento Create
[gml]
vAngular = 8; //velocidad angular
angulo = 0; //angulo del sprite
tope = 270; //angulo tope cuando aterriza
[/gml]
Eveno Step
[gml]
if place_meeting( x, y+1, obj_piso ) //tocando el piso
{
if( angulo > tope ) //si no ha llegado al tope
angulo -= vAngular; //girar
if( angulo <= tope ) //si ha llegado al tope
angulo = tope; //detener
}
else //en el aire
{
angulo -= vAngular; //girar
if( angulo < tope )tope -= 90; //nuevo tope
if( tope < 0 )tope += 360; //evitar tope negativo
if( angulo < 0 )angulo += 360; //evitar angulo negativo
}
[/gml]
Evento Draw
[gml]
draw_sprite_ext( sp0,0, x,y, 1,1, angulo,c_white,1);
[/gml]
Encontré un método de girar como en Geometrý Dash. Es importante no girar la caja de colisión (no modificar image_angle) para no complicar las colisiones, lo mismo se hace en GD.
Evento Create
[gml]
vAngular = 8; //velocidad angular
angulo = 0; //angulo del sprite
tope = 270; //angulo tope cuando aterriza
[/gml]
Eveno Step
[gml]
if place_meeting( x, y+1, obj_piso ) //tocando el piso
{
if( angulo > tope ) //si no ha llegado al tope
angulo -= vAngular; //girar
if( angulo <= tope ) //si ha llegado al tope
angulo = tope; //detener
}
else //en el aire
{
angulo -= vAngular; //girar
if( angulo < tope )tope -= 90; //nuevo tope
if( tope < 0 )tope += 360; //evitar tope negativo
if( angulo < 0 )angulo += 360; //evitar angulo negativo
}
[/gml]
Evento Draw
[gml]
draw_sprite_ext( sp0,0, x,y, 1,1, angulo,c_white,1);
[/gml]
555
Preguntas y respuestas / Re:Ayuda - Como puedo hacer un Menu Desplegable (Drop down menu)?
Septiembre 10, 2017, 01:01:07 PM
Buenos tutoriales facueze88