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

541
Preguntas y respuestas / Re:PERSONAJE QUE SIGA AL PLAYER
Septiembre 26, 2017, 12:47:09 AM
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.
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
Si los polígonos no necesitan una sombra con gradiente puedes desactivarla con esta función
[gml]
d3d_set_shading(false)
[/gml]
544
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]
545
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.
546
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]
547
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
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.
550
Muestra el código o DnD que usas.
552
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]
553
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.
554
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]
555
Buenos tutoriales facueze88