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

1456
Preguntas y respuestas / Re:Crear un objeto al azar
Enero 28, 2015, 08:57:11 PM
¿Es necesario que los objetos sean diferentes?
Hice un ejemplo en el que 15 instancias de un objeto se transforman al azar en 2 instancias de otro objeto. La parte importante está en el evento (Mouse) Global Left Pressed:
[gml]
///Cambiar un objeto al azar

if( instance_number(ob0) > 0 ) //si hay instancias que transformar
{
    ds_list_clear( global.l ); //limpiar la lista
    with(ob0) ds_list_add( global.l, id ); //agregar id's a la lista
    ds_list_shuffle( global.l ); //desordenar lista
   
    with( ds_list_find_value(global.l,0) ) //con una instancia al azar
    {
        instance_create( x,y, ob1 ); //crear 2 instancias nuevas
        instance_create( x,y+16, ob1 );
        instance_destroy(); //destruirse
    }
}
[/gml]
¿Eso es lo que buscabas?
1457
Preguntas y respuestas / Re:scrolling ventana
Enero 28, 2015, 03:04:24 PM
Se puede hacer creando una room grande y una view que abarque parte de esa room.
1458
¿El juego tiene vista cenital verdad?
Usa las variables image_xsacale e image_yscale, que inicien con un valor determinado y que en cada step se reduzcan, ya sea restando un pequeño valor o multiplicando por un factor, ejemplos:
[gml]
///Evento Step
image_xscale -= 0.01;
image_yscale -= 0.01;
[/gml]
ó
[gml]
///Evento Step
image_xscale *= 0.9;
image_yscale *= 0.9;
[/gml]
1459
La variable text es local porque es declarada con var, al terminar la pieza de código se borra, y sería mejor usar surface_get_texture después de surface_reset_target. Si sigue sin funcionar, tal vez sea necesario desactivar el "culling" con d3d_set_culling( false ); antes de dibujar en la superficie.
1460
Como en el archivo adjunto.
1461
Crea un nuevo script, copia y pega el texto del script y dale un nombre a ese script (se sugiere "number_format"). El script devuelve una cadena que se puede dibujar con draw_text. Si el número no tiene cifras decimales al final aparecerán ceros. Muestra tu código para encontrar el error.
1462
La forma más rápida sería dibujar el muro 3D con esa forma y aplicarle una textura normal. Otro método sería usar surfaces y primitivas 2D para transformar la textura y combinar sprites, algo así:
[gml]
///Evento Create

sf = surface_create( 64, 128 ); //crear superficie (es más alta que ancha)
tx = sprite_get_texture( spr, 0 ); //usar un sprite como textura (suponemos que mide 64x64)
texture_set_interpolation( true ); //para que la textura resultante no se vea pixelada

surface_set_target( sf );
draw_clear_alpha( 0, 0 ); //hacer la superficie transparente

    //Dibujar la textura con efecto "skew"
    draw_primitive_begin_texture( pr_trianglestrip, tx );
        draw_vertex_texture( 0,  64,  0,0 );
        draw_vertex_texture( 64, 0,   1,0 );
        draw_vertex_texture( 0,  128, 0,1 );
        draw_vertex_texture( 64, 64,  1,1 );
    draw_primitive_end();
   
    //Dibujar otro sprite en la superficie
    draw_sprite( spr, 0, x,y );
   
surface_reset_target();
[/gml]
Después obtienes el id de la textura transformada con surface_get_texture. Para evitar los inconvenientes de las surfaces, puedes crear un sprite o background a partir de esta superfice con sprite_create_from_surface ó background_create_from_surface.
1463
Aquí está un script para eso: http://www.gmlscripts.com/script/number_format
Debes usarlo de esta forma: number_format( CREDITOS, 2, ".", "," );
1464
En el editor de rooms, en la parte de arriba, aparece un icono con forma de flecha que apunta a la derecha, sirve para desplazar todas la instancias, y si seleccionas la pestaña "tiles" desplaza todas las tiles.
1465
En el ejemplo "Angry Cats" que viene en GMS está un ejemplo de cómo dibujar la trayectoria de un proyectil que usa el sistema de físicas. En el evento Create de objAngryCat aparece éste código:
[gml]
//Cat vars
makingPoo = true;
lastPooX = 0;
lastPooY = 0;
[/gml]
y en el evento Step esto:
[gml]
//Make a trail if still permitted   
if makingPoo
{
if point_distance(x,y,lastPooX,lastPooY) > 30
    {
    //Create trail instance
    instance_create(x,y,oPoo);
    lastPooX = x;
    lastPooY = y;
    }
}
[/gml]
simplemente crea objetos estáticos, a cierta distancia, por donde pasa volando (y borra la trayectoria anterior).
Cuando colisiona con un bloque [gml]//Switch off trails
makingPoo = false;[/gml]
desactiva la creación de puntos, pero en tu caso no necesitas esa parte.

Los puntos se van creando cuando el proyectil se mueve, porque dibujar la trayectoria en tiempo real antes de lanzar el proyectil sería un proceso muy demandante en GMS, y más si se está usando el sistema de físicas.

Lo que se me ocurre para dibujar una trayectoria antes de disparar es crear un fragmento de la trayectoria en cada Step, y si el ángulo o la fuerza se cambia volver a trazar la trayectoria. Cuando tenga tiempo intentaré hacer un ejemplo.
1466
Se puede usar una variable global.pausa, y cuando esté activa hacer que los objetos se salten sus eventos (con exit o Exit event), excepto el evento Draw, o hacer que los objetos se cambien (usando instance_change) por un objeto vacío que herede los valores de sprite_index e image_index, y cuando se quite la pausa los objetos se transformen otra vez en los que eran antes. En esos métodos no hay que olvidar poner image_speed a cero.
1467
Preguntas y respuestas / Re:Problema con mi juego
Enero 23, 2015, 05:43:05 AM
En alguna parte, al cambiar de room, has cambiado el alfa. Escribe  draw_set_alpha( 1 );  en el evento Draw antes de que se dibujen los objetos que mencionas.
1468
Juegos completos / Re:PONG 2015
Enero 22, 2015, 04:16:00 PM
No se si así está planeado, pero en algunos momentos el contador del jugador se pone a cero, eso sucede al anotar después de que anotó la máquina.
1469
Tal vez falta poner un código que revise si hay suficiente espacio, en la dirección indicada, antes de moverse, o que la distancia que se revisa es menor a la rapidez del personaje.
1470
Preguntas y respuestas / Re:Como borrar un draw_text
Enero 21, 2015, 08:48:16 PM
Usando variables y condiciones:
[gml]
if( not accion ) draw_text ...
[/gml]