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

1006
Además, en GMS es muy importante re-escalar la application_surface para que la imagen no se deforme.
http://docs.yoyogames.com/source/dadiospice/002_reference/surfaces/application_surface.html
1007
Creo que ese código es demasiado Niu, en realidad es más fácil calcular la posición intermedia.

Una forma es así
[gml]
x = (ob1.x + ob2.x)/2;
y = (ob1.y + ob2.y)/2;
[/gml]

Otra forma es usando la función lerp
[gml]x = lerp( ob1.x, ob2.x, 0.5 );[/gml]
el 0.5 se puede cambiar por otro valor, entre 0 y 1, para que el objeto quede más cerca de un objeto que de otro.
1008
La función display_get_widt funcionará sólo para pantalla completa, con la función window_get_width se puede configurar una ventana re-escalable.
1009
Lo que debes hacer es que la variable depth se relacione con la distancia a la cámara, para que todo se vaya dibujando en orden, primero el fondo y luego el primer plano. De forma alternativa puedes usar la función d3d_set_hidden
1010
Supongo que el ajuste de tamaño de la application_surface lo estás realizando en el evento Create, pero recuerda que no se debe hacer en cada Step, ya que podría congelar el juego.
1011
Esta es una solución.
En el evento Create asigna una variable
[gml]vx = 0; //velocidad horizontal[/gml]
Y en el evento Step escribe el siguiente código
[gml]
if( keyboard_check(vk_right) and vx>=0 ) vx = 2;
else if( keyboard_check(vk_left) and vx<=0 ) vx = -2;
else vx = 0;

if( vx <> 0 )
{
    x += vx;
    image_xscale = sign(vx);
    sprite_index = spr_hatman_2;
}
else sprite_index = spr_hatman;
[/gml]
1012
Preguntas y respuestas / Re:Barra de vida a enemigos
Enero 10, 2016, 03:10:38 AM
En el evento Create del enemigo, asigna la variable vida
[gml]vida = 100;[/gml]
(100 es un ejemplo, usa el valor que quieras)

En el evento Colisión con la bala resta un valor a la vida y revisa si ha llegado a cero, en ese caso, destruye al enemigo.
[gml]
vida -= 5;
if( vida <= 0 ) instance_destroy();
[/gml]
(resta el valor que necesites)
1013
La velocidad de la animación se controla con la variable image_speed. Si quieres que pasen 3 segundos entre cada imagen, debes poner esto en el evento Create:
[gml]image_speed = 1/(3*room_speed);[/gml]
también puedes asignar el valor manualmente, por ejemplo:
[gml]image_speed = 0.02;[/gml]
1014
Con la nueva forma de dibujar de GMS, lo más importante es cambiar el tamaño de la application_surface. Si el juego es en 3D, las dimensiones de la vista y el port no son tan importantes, a menos que tengas muchas escenas en 2D.

El ajuste automático podría ser así:

Usa dos variables para guardar el tamaño inicial de la ventana (funciones window_get_width, _height), en el evento Step revisa el tamaño actual de la ventana, entonces, se deben cambiar también las dimensiones de la vista, el port y la applicaction_surface
[gml]surface_resize( application_surface, w, h );[/gml]
también debes actualizar las variables que almacenan el tamaño de la ventana.

En el evento Draw usa la función d3d_set_projection_ext, para que el argumento aspect sea igual al aspecto de la ventana y la imagen no se deforme.
1015
Preguntas y respuestas / Re:corregir colisiones
Enero 08, 2016, 03:59:52 AM
Si las colisiones cambian al voltear al personaje, entonces la máscara no está bien centrada, revisa con detenimiento los valores en la ventana de propiedades de la máscara, también revisa el origen del sprite.

Para asignar un sprite como máscara de colisión, usa el botón Mask que aparece a la izquierda de la imagen:

http://docs.yoyogames.com/index.html?page=source%2Fdadiospice%2F000_using%20gamemaker%2F008_defining%20objects.html
1016
Preguntas y respuestas / Re:corregir colisiones
Enero 07, 2016, 04:38:00 AM
La máscara de colisión es demasiado grande para el personaje, debes reducirla en la ventana de propiedades de los sprites, o crear un sprite que se use exclusivamente como máscara de colisión, así no tendrás que ajustar los sprites uno por uno.
1017
Si las views tienen diferentes valores de port dentro de la ventana puedes comparar esos valores con los obtenidos a través de las funciones window_mouse_get_x y window_mouse_get_y
1018
Si buscas gui en el marketplace puedes encontrar un montón de ejemplos:
https://marketplace.yoyogames.com/search/results?utf8=%E2%9C%93&query=gui
Todos usan formas diferentes de implementar los controles.
1019
Parece que ya entiendo lo que quieres hacer, y aunque tú mismo lo has explicado era difícil de entender, se trata de simular la función show_question, pero con un nombre muy confuso "crear_a_martin()", y el cuadro diálogo es una instancia del objeto martín.
Ahora quieres que el mismo script devuelva el valor del botón que se presionó en el cuadro de diálogo; eso no se puede hacer en el mismo step, porque se requiere que el cuadro detecte los eventos de presión del ratón. Lo mejor sería que el cuadro asigne una variable global y que en el evento Step de la instancia que lo creó se revise el valor de la variable.
1020
Preguntas y respuestas / Re:Contador poligono?
Enero 05, 2016, 05:26:17 PM
Usa las funciones lengthdir_x y lengthdir_y.

Por ejemplo, coloca este código en el evento Draw de un objeto:
[gml]
draw_line( x,y, x+lengthdir_x(100,direction), y+lengthdir_y(100,direction) );
direction += 2;
[/gml]