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

841
Preguntas y respuestas / Re:Dibujar laser extendido
Abril 03, 2016, 04:34:55 PM
Es mejor si es una sola instancia que cambia su tamaño (con image_xscale, image_yscale)
842
Es extraño, lo ejecuté por más de 5 minutos y en ningún momento bajaron los fps, el uso de memoria se mantuvo constante (20 MB aprox.) y el uso de procesador fluctuó un poco, pero nunca se usó demasiado.

Hice otra prueba y encontré un error: Cuando se reinicia la room las surfaces se mantienen en memoria y se crean otras nuevas, el uso de memoria no incrementa mucho, pero de todas formas es un desperdicio. Es necesario borrar esas surfaces, al cambiar de room o al reiniciar, y también sería conveniente al finalizar el juego.
[gml]
//Previo a room_restart
if surface_exists( sf0 )
surface_free( sf0 );

if surface_exists( sf1 )
surface_free( sf1 );

// ...
[/gml]
843
[gml]
x = irandom_range( 50+w2, 670-w2 );
y = irandom_range( 460+h2, 920-h2 );
[/gml]
844
Preguntas y respuestas / Re:gravedad
Abril 02, 2016, 05:40:23 AM
¿qué clase de planeta es?, ¿cómo se detectan las colisiones?
Adjunto el editable de "They need to be fed", es un motor de planetas muy sólido, pero bastante complejo.
845
Por defecto dos toques rápidos se detectan como un clik derecho, para que eso no suceda debes usar esta función
[gml]
device_mouse_dbclick_enable( false );
[/gml]
Y como mencionó Niu, no tiene sentido usar las funciones para multitouch y después las de mouse normal.
Lo mejor es que el multitouch se maneje en un objeto aparte, para que no se repita el ciclo for en todas las instancias que deben reaccionar a los toques, por ejemplo:
[gml]
for( i=0; i<5; i++ )
if device_mouse_check_button_pressed( i, mb_left )
{
   with instance_position(
   device_mouse_x(i),
   device_mouse_y(i), objeto )
   {
      // acciones ...
   }
}
[/gml]
846
En el código que puse, ya se calcula el tamaño y además se divide entre 2 (variables w2 y h2). La división se hace suponiendo que el origen está en el centro del sprite. Esos valores se usan como parámetros en la función irandom_range.
847
No logré encontrar el problema, tal vez es el origen de la máscara de colisión, o es porque estas combinando la detección de colisión con "place" y "position".
848
Calcula el tamaño del objeto para cambiar el rango de posicionamiento:
[gml]
if !instance_exists( obj_enemigo )
with instance_create( 0,0, obj_enemigo )
{
    w2 = sprite_width * image_xscale / 2;
    h2 = sprite_height * image_yscale / 2;
    x = irandom_range( w2, room_width-w2 );
    y = irandom_range( h2, room_height-h2 );
}
[/gml]
849
Creo que se refiere a las opciones que están en
Global Game Settings » Other » Game Process Priority
nunca las he usado, así que no se si de verdad funcionan.
850
Preguntas y respuestas / Re:existe opción "GUI"?
Marzo 29, 2016, 08:42:45 PM
No existe una forma fácil, pero tal vez los recursos del mercado te puedan ayudar:
https://marketplace.yoyogames.com/search/results?utf8=✓&query=gui
851
No siempre existe una solución sencilla, porque hay que pensar en todas las posibilidades. Si quieres sube una imagen para ver cómo debe ser el ajuste, así será más fácil ayudar.
852
Ya lo pasé a gmk, espero que funcione.
853
También podría ser así
[gml]
//Evento Create
speed = 5;
[/gml]
[gml]
//Evento Global Mouse Left
direction -= 90;
[/gml]
854
Las coordenadas deben ser variables para que se puedan ajustar a cualquier ventana. El primer paso es conocer el tamaño de la capa GUI o de la ventana (que normalmente es el mismo), con estas funciones:
[gml]
anchura = window_get_width();
altura = window_get_height();
// o
anchura = display_get_gui_width();
altura = display_get_gui_height();
[/gml]
y después posicionar el texto, por ejemplo:
[gml]
draw_text( anchura/2, altura-50, puntos );
[/gml]
855
Wikipedia explica muy bien el algoritmo, y con esa información hice este script:
[gml]
///ean( cadena )

var I, L, S;

L = string_length( argument0 ); //longitudd
if( L<>7 and L<>12 ) return -1; //codigo no valido

S = 0;
for( I=L; I>0; I-=2 ) //suma impar
S += real(string_char_at( argument0, I ));
S *= 3;
for( I=L-1; I>0; I-=2 ) //suma par
S += real(string_char_at( argument0, I ));

return (10 - (S mod 10)) mod 10; //resultado
[/gml]
La entrada debe ser una cadena de 7 o 12 carateres, y el resultado es un entero.