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

1366
Si quieres hacer una transición entre colores con matices más complicados usa la función merge_colour http://docs.yoyogames.com/source/dadiospice/002_reference/drawing/color%20and%20blending/merge_color.html
Primero define los colores inicial y final, y la variable que controla la cantidad de color:
[gml]
color1 = make_color_rgb( rojo, verde, azul );
color2 = make_color_rgb( rojo, verde, azul );
t = 0;
[/gml]
Después se asigna la variable image_blend para colorear el sprite:
[gml]
if( t < 1 ) t += 0.01;
image_blend = merge_color( color1, color2, t );
[/gml]
1367
Usa una variable para indicar cuándo puede recibir instrucciones y cuándo no, por ejemplo:
[gml]
///EVENTO STEP
if( reposo ) //si el personaje está en reposo
{
    if keyboard_check_pressed( vk_up )
    {
        speed = 2;
        direction = 90;
        reposo = false;
    }
    if keyboard_check_pressed( vk_down )
        ...
}
[/gml]
Al colisionar con una plataforma/obstáculo hacer algo como esto:
[gml]
speed = 0;
reposo = true;
[/gml]
1368
Preguntas y respuestas / Re:colision no funciona
Marzo 13, 2015, 02:21:37 PM
Cita de: vyke game en Marzo 13, 2015, 03:38:09 AM
pero que podria poner en colision, o simplemente pongo el evento sin nada?
Si, puedes crear un evento colisión sin código, pero debes poner al menos un comentario para que no se borre automáticamente. Eso evitará que el objeto (si es sólido) se pueda traspasar. Ve si el modo en que reacciona es suficiente, tal vez necesites un sistema más elaborado.
1369
Creo que en primer lugar se debe publicar una demo cuando parezca que no tiene bugs, después publicar las actualizaciones cada vez que haya cambios importantes, para que los demás no se aburran descargando versiones casi iguales. Y para mantener al público interesado no debe pasar mucho tiempo (varios meses) sin mostrar avances.
1370
Hice un ejemplo y ahora explico cómo lo resolví:

Todo lo importante se encuentra en el evento Draw de obConector, éste objeto tiene 3 estados (0 ,1 y 2) que se indican con la variable "conectado".

En estado 0, cuando el cursor se pone encima de un círculo el id de esa instancia se guarda en la variable "inst1", si además se hace click pasa al estado 1 y el primer nodo queda anclado.

En estado 1, cuando el cursor se pone sobre otra instancia su id se guarda en "inst2", si en ese momento se suelta el botón izquierdo del ratón pasa al estado 2 y el segundo nodo queda anclado, también se crea otra instancia de obConector (para seguir haciendo conexiones) y éste es el lugar donde se debe producir la acción que mencionas. Si el botón se suelta lejos de una instancia, obConector vuelve a su estado inicial (conectado = 0).

En estado 2 el objeto ya queda completamente anclado, sólo dibuja los nodos y la línea de conexión.

Si quieres ver los objetos en movimiento cambia el valor de speed, en el evento Create de obBola.
1371
Así es, la técnica para que los modelos se iluminen de forma suave, y que no se noten los polígonos, es definir polígonos con normales que coincidan con las normales de los polígonos colindantes. Todos los softwares de modelado que he visto pueden hacer eso de forma automática, incluso el "Model creator".

Debes hacer los models con el programa que sepas usar. Para comenzar a aprender puedes usar http://www.wings3d.com/ o http://www.sketchup.com/es. Para importar los modelos a  :GMS:, se debe usar un convertidor de formato ,el Model Creator puede funcionar, también éste http://sandbox.yoyogames.com/games/120956-3d-animator, y hay otros convertidores, tal vez exista una extensión para importar otros formatos pero sólo he visto para  :GM8:.
1372
Aunque una de las ventajas de usar doble vista es que no es necesario pre-calcular la posición de la view antes de dibujar los sprites estáticos, que muchas veces causa que se vean pequeños saltos de la imágenes cuando la view cambia de posición.

Para interactuar con los sprites, la solución es tratar a los sprites como botones. Lo mejor es usar un script de botón como este: http://www.comunidadgm.org/desarrollo-de-scripts/botones-automaticos/
1373
Es más fácil el segundo método que mencionó shaq145, usar una sola vista y dibujar los elementos estáticos en el evento Draw GUI o dibujar esos elementos con coordenadas relativas a la vista.
1374
Preguntas y respuestas / Re:LIMITE DE TECLAS?
Marzo 07, 2015, 10:27:55 PM
Debes hacer que no sea necesario ocupar demasiadas teclas a la vez (me imagino que Iros quiso decir esto con optimizar), las personas que prueben tu juego pueden tener el mismo problema con diferentes combinaciones de teclas.

He notado que en varios teclados no se pueden hacer combinaciones de flechas y letras, y por lo general si se pueden hacer combinaciones de letras.

Puedes agregar la opción de configurar los controles para que cada quien use las combinaciones que le funcionan. Si quieres combinar más de 3 teclas la mejor opción puede ser usar botones del ratón y teclas. Si es indispensable usar muchos botones debes dar soporte para joystick o gamepad.
1376
Esta es la explicación. A cada cuadro dentro de la matriz de 20x20 se le asigna un número de esta forma:

se van numerando de izquierda a derecha y de arriba a abajo, desde 0 hasta 399. Los números que están en la fila superior y en la columna de la izquierda son las coordenadas de los cuadros dentro de la matriz. Como la numeración está ordenada, es fácil saber las coordenadas de un cuadro a partir de su número asignado, por ejemplo, si tomamos el cuadro 42, si dividimos a mano 42 entre 20 tendremos 2 como resultado entero y 2 como residuo, [2,2] son las coordenadas del cuadro dentro de la matriz, esos resultados se obtienen con los operadores "div" y "mod". Para obtener la posición real del cuadro en la room hay que multiplicar esas coordenadas por 20.
1377
Yo lo implementé usando una lista y tiles, en este caso las tiles convienen porque usan menos memoria y menos procesador que los objetos:
[gml]
///EVENTO CRAETE
global.l = ds_list_create(); //crear lista
for( i=0; i<400; i+=1 )
    ds_list_add( global.l, i ); //llenar con numeros desde 0 hasta 399
ds_list_shuffle( global.l ); //desordenar lista
i = 0; //contador de cuadros creados (se reutiliza la variable)
[/gml]
[gml]
///EVENTO STEP: Llenar pantalla de cuadros
if( i < 400 ) { //si no se ha llenado
    repeat( 2 ) { //crear 2 cuadros
        z = ds_list_find_value( global.l, i ); //obtener un numero al azar
        x = (z mod 20) * 20; //determinar una posicon a partir del numero
        y = (z div 20) * 20;
        tile_add( bgCuadro, 0,0, 20,20, x,y, -1000 ); //agregar cuadro
        i += 1; //incrementar contador
    }
}
else room_goto_next(); //si se ha llenado, ir a room siguiente
[/gml]
La velocidad de la transición se puede aumentar usando un número mayor en el ciclo repeat.
En el ejemplo adjunto he puesto también el efecto contrario; borrar los cuadros.
1378
Aquí un tutorial hecho por penumbra: http://www.inventati.org/estupidezartificial/web/papers/multivistas.html
Y adjunto un tutorial hecho por John J.A.H. Weeren.
1379
Preguntas y respuestas / Re:Velocidad variable
Marzo 03, 2015, 12:56:40 AM
El código que presentó arcangelcaos, se puede reducir de esta forma:
[gml]
randomize();
instance_create(
    choose( -32, room_width+32 ),
    irandom_range( 8, room_height-8 ),
    obFlecha );
[/gml]
He dejado un ejemplo adjunto.
1380
Preguntas y respuestas / Re:¿Mejor rendimiento?
Marzo 02, 2015, 06:53:52 PM
Concuerdo completamente con Iros. :D