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

916
Preguntas y respuestas / Re:DETECTAR COLISION
Febrero 25, 2016, 11:33:20 PM
Seguramente los objetos están en colisión más de un step. Debería existir una variable que indique el estado de la colisión en el step anterior.

Esta es una forma
[gml]
//Create
colision_previa = false;

//Step
colision_actual = place_meeting( x,y+sign(vy), obPared );
if( colision_actual and not colision_previa )
image_index += 1;
colision_previa = colision_actual;
[/gml]

Y esta es otra forma
[gml]
//Create
colision = false;

//Step
if place_meeting( x,y+sign(vy), obPared)
{
    if( not colision )
    {
        image_index += 1;
        colision = true;
    }
}
else colision = false;
[/gml]
917
Preguntas y respuestas / Re:d3d_draw_floor
Febrero 25, 2016, 10:49:53 PM
También debes usar
[gml]
texture_set_repeat( true );
[/gml]
918
Hice algunas pruebas, pero la única forma que encontré para evitar que se note la distorsión es usar varios triángulos. En la imagen se muestran dos configuraciones que se podrían utilizar (tira y abanico). Tal vez se pueda solucionar con shaders, pero hay que investigar.
919
Si la vista se mueve, no es conveniente usar mouse_x mouse_y, debes revisar la posición del ratón relativa a la ventana o pantalla con alguna de estas opciones:
[gml]
window_mouse_get_*
display_mouse_get_*
device_mouse_*_to_gui
[/gml]

Hacer un menú animado puede ser difícil, dependiendo de cuántos parámetros se deban animar: como posición, color y tamaño. Una solución para esto es usar un sistema de interpolación de variables, como este: http://www.comunidadgm.org/articulos/tweenline-animation-engine-%28extension%29/, o puedes crear el tuyo.
En el "Mercado" hay otros ejemplos: https://marketplace.yoyogames.com/search/results?utf8=%E2%9C%93&query=tween
También hay assets destinados para hacer interfaces gráficas animadas: https://marketplace.yoyogames.com/search/results?utf8=%E2%9C%93&query=gui
920
Es un comportamiento normal, no un bug, lo mismo sucecería si se estira una tela  o algo parecido.
Para que la primitiva mantenga las líneas paralelas, se deben modificar las coordenadas de los vértices dentro de la textura, además de cambiar las coordenadas en el espacio. Algo así:
[gml]
d3d_primitive_begin_texture( pr_trianglestrip, obCtrl.txBordeBotGris[obCtrl.vrBordeAnim] );
    d3d_vertex_normal_texture( -100 - obTrucos.vrGradual, +200, -50, 0, 0, 1, 0, 1 );
    d3d_vertex_normal_texture( -100, +170, -50, 0, 0, 1, 0+(obTrucos.vrGradual/100), 0 );
    d3d_vertex_normal_texture( +100 + obTrucos.vrGradual, +200, -50, 0, 0, 1, 5, 1 );
    d3d_vertex_normal_texture( +100, +170, -50, 0, 0, 1, 5-(obTrucos.vrGradual/100), 0 );
d3d_primitive_end();
[/gml]
El problema es encontrar la proporción correcta
921
Observa la última línea del script
[gml]
return (in && mouse_check_button_pressed(mb_left));
[/gml]

Sólo debes poner un if
[gml]
if draw_get_button(x,y+180,"PAUSE",120,40,c_white,c_fuchsia,c_maroon)
{
    //acciones
}
[/gml]
923
Debes des-comentar estas líneas
[gml]
speed = 0;
x = xx;
y = yy;
[/gml]
924
Preguntas y respuestas / Re:OBJ CUIDA A OTRO OBJ
Febrero 21, 2016, 03:02:06 AM
Si el objeto panal crea a las abejas, entonces esto podría funcionar:
[gml]
with instance_create( x,y, obj_abeja )
mi_panal = other.id;
[/gml]
925
Para tener una reacción más realista (y con cálculos automáticos) puedes usar el sistema de física (Box2D)
http://docs.yoyogames.com/source/dadiospice/002_reference/physics/index.html
926
En ese caso se puede usar menos código:
[gml]
if instance_exists( obj_player )
{
    xx = obj_player.x - obj_player.facing*16;
    yy = obj_player.y - 16;
    move_towards_point( xx,yy, 5 );
   
    if( distance_to_point(xx,yy) < 5 )
    {
        image_scale = obj_player.facing;
        //speed = 0;
        //x = xx;
        //y = yy;
    {
}
else instance_destroy();

effect_create_below( ef_spark, x,y, 0,c_aqua );
[/gml]
La última es opcional, y las algunas líneas están comentadas para dejar que la instancia vibre alrededor de la posición final.
927
Preguntas y respuestas / Re:control de personaje tactil
Febrero 19, 2016, 01:25:44 AM
No estoy seguro del tipo de control que buscas, pero hice un ejemplo (adjunto). Usé un script de Markus: http://www.comunidadgm.org/desarrollo-de-scripts/rotacion-lenta/. El código se debe mejorar para poder manejar todos los puntos táctiles, ya que puede haber más de un dedo pulsando la pantalla y sólo uno es el que realiza el swipe.
928
Las dimensiones de la virtual key también se deben multiplicar por la escala. Y si la view no cambia de tamaño, no es necesario calcular la escala en cada evento Draw GUI. Estas son unas modificaciones al código:
[gml]
//CREATE EVENT:
sx = display_get_width() / view_wview[0]; //escala horizontal
sy = display_get_height() / view_hview[0]; //escala vertical
left = virtual_key_add( sx*50,sy*620, sx*150,sy*200,vk_left);
[/gml]
[gml]
//DRAW GUI EVENT:
if keyboard_check( vk_left )
    draw_sprite_ext( spr_button_left,1, sx*100,sy*620,sx,sy, 0,c_white,1 );
else
    draw_sprite_ext( spr_button_left,0, sx*100,sy*620,sx,sy, 0,c_white,1 );
[/gml]
Espero que con eso funcione.
929
Puedes usar una variable estado que cambie entre dos valores, uno representaría el estado "siguiendo" y el otro "girando". Ejemplo:
[gml]
//Evento Step
if( ESTADO == CAMINANDO )
{
    lado = sign( obPerseguido.x - x ); //si el objeto perseguido cambia de lado
    if( lado <> 0 and lado <> image_xscale ) //y si el lado es contrario a image_xscale
    {
        ESTADO = GIRANDO; //cambiar estado a girando
        sprite_index = spr_giro; //asignar sprite
        image_speed = 0.5;
        image_index = 0;
    }
}
[/gml]
[gml]
//Evento Animation End
if( ESTADO == GIRANDO ) //cuando termina la animacion de giro
{
    ESTADO = SIGUIENDO; //cambiar estado a siguiendo
    sprite_index = spr_camina; //asignar sprite
    image_speed = 0.2;
    image_index = 0;
    image_xscale *= -1; //voltear sprite
}
[/gml]
930
¿La misma instancia que hace el conteo crea otra instancia?
Para no tener problemas con la persistencia, podrías usar una varible global que se asigne al principio del juego (tal vez en el evento Game Start), y crear un objeto que decremente a esa variable en cada step. Algo así:
[gml]
global.tiempo -= 1;
if( global.tiempo <= 0 )
{
    instance_create( x,y, obj );
    global.tiempo = 5*room_speed; //cinco segundos
}
[/gml]
el objeto que crea las instancias debe ser colocado en cada room que lo necesite.