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

856
Creo que no hay una solución definitiva para mejorar el rendimiento, cuando se usan surfaces el rendimiento varía mucho dependiendo de la tarjeta gráfica que tiene la computadora.
Tal vez esto funcione: Para no crear el sprite podrías dibujar en el evento Draw directamente a la superficie, como en este ejemplo:
http://www.comunidadgm.org/preguntas-y-respuestas/efecto-desenfoque-radial/
857
Cierto es hspeed, me equivoqué; sí, se suma para revisar si hay piso hacia donde se va a mover. También podría ser una variable personalizada que indique la dirección de movimiento.
858
La verdad es muy raro, tal vez el repeat se hace con un número negativo. Mejor usa un código comprobado, para no esforzarnos mucho en encontrar la solución:
[gml]
if keyboard_check( vk_left )
{
    x += velL;
    while place_meeting( x,y, plataforma_3232 ) x += 1;
   
    estado = "corriendo";
    der = false;
}
[/gml]
Aquí la colisión se detecta con la caja de colisión normal, pero si necesitas cambiarla en determinadas situaciones puedes usar la variable mask_index.
859
Podrías revisar un punto de colisión abajo del personaje y desplazado en dirección de la velocidad horizontal. Por ejemplo:
[gml]
if not position_meeting( x+vspeed, y+20, obj_piso )
{
    // acciones
}
[/gml]
860
El máximo tamaño para cualquier imagen es 2048x2048, si es más grande se escala a la mitad. Esto se explica aquí:
https://docs.yoyogames.com/source/dadiospice/001_advanced%20use/more%20about%20backgrounds/texture%20pages.html

Una solución para el problema es recortar el bg y dibujarlo por partes. Pero no es recomendable dibujar todas las partes al mismo tiempo, porque se realizarían muchos cambios de textura, y eso afecta el rendimiento, lo mejor sería dibujar sólo la parte del background que es visible en cada momento.
861
Los argumentos son x,y,obj_puente
Y deberás agregar los eventos de colisión necesarios para todos los objetos que causen un cambio de room.
862
Preguntas y respuestas / Re:Directorios en Android
Marzo 26, 2016, 04:25:10 PM
Antes de poder escribir en la sdcard debes activar la opción WRITE_EXTERNAL_STORAGE
https://docs.yoyogames.com/source/dadiospice/001_advanced%20use/global%20game%20settings/android%20tab.html
Pero no estoy seguro con qué ruta se accede a la tarjeta.
863
Juegos en desarrollo / Re:Alfomedor
Marzo 26, 2016, 12:40:57 AM
La única forma que se me ocurre para que el ratón no se salga de la ventana es usar window_mouse_set, pero el ajuste nunca funciona a la misma velocidad de actualización del ratón, por lo que durante pequeños intervalos de tiempo se puede salir de la ventana.
864
La función place_meeting en el evento Step es casi lo mismo que tener un evento Colisión. Sí hay un poco de desperdicio porque se usa la función en una instancia y el evento colisión en otras instancias, sin embargo, como existen pocos puentes en cada room, el tiempo invertido en detectar la colisión es insignificante. Y las colisiones precisas se deben evitar lo más que se pueda.
865
Preguntas y respuestas / Re:Ida y.vuelta de.un room
Marzo 25, 2016, 04:34:55 AM
Yo tengo otro método:

El cambio sólo se debería realizar cuando el personaje se aleje del puente y se acerque otra vez, la solución es usar una variable que indique cuándo se acaba de realizar el cambio de room, esa variable puede ser local (en el personaje) si éste es persistente, o global en caso contrario. También sería conveniente agrupar todos los puentes con un objeto padre, para que el código quede más compacto.

La variable se debe asignar en el evento Create del personaje
[gml]
global.cambioroom = false;
[/gml]
No se cómo en qué evento haces el cambio de room, voy a suponer que se hace en el evento colisión del puente con el personaje, entonces el código seria así:
[gml]
if( global.cambioroom == false )
{
    room_goto( otroroom );
    global.cambioroom = true;
}
[/gml]
Y en el evento Step del personaje iría esto:
[gml]
if not place_meeting( obj_puente )
global.cambioroom = false;
[/gml]
866
Ese es un problema muy común en los juegos de plataformas cuando se usa move_contact_solid, u otra función similar.

Una solución es este código:
http://www.comunidadgm.org/preguntas-y-respuestas/colision-en-juego-de-plataformas/

En este tema subí un ejemplo:
www.comunidadgm.org/preguntas-y-respuestas/problemas-con-colisiones-en-juego-de-plataformas/
867
Hola. El primer problema es que usas el device_mouse 0 en los dos casos, así mientras se toque un lugar de la pantalla el otro toque no puede ser detectado, la solución es usar un ciclo for que revise los 5 puntos (numerados de 0 a 4). Para detectar el ultimo botón presionado puedes usar device_mouse_check_button_pressed y para detectar en qué momento se suelta puedes usar device_mouse_check_button_released. Espero que con estas ideas puedas avanzar, más tarde intentaré hacer un ejemplo, también puedes buscar en el foro, algunos han hecho preguntas similares.

PD: Acabo de notar que este tema está en la sección incorrecta, debes crearlo en la sección de preguntas y respuestas.
868
¿Qué dice el mensaje de error? ¿Es este?
Cita de: ErrorTrying to use non-existing surface.

Eso sucede porque las surfaces se borran por varios motivos y no se ha programado un método de protección. La idea es que antes de dibujar la superficie se revise que aun existe, y si no, se debe volver a crear.
869
Preguntas y respuestas / Re:Disparo diagonal
Marzo 23, 2016, 01:06:47 AM
El mismo mensaje indica el problema: La variable v es desconocida, o sea, que no se le ha dado un valor, y por lo tanto no se puede hacer una operación con ella.
Le debes asignar un valor en el evento Create, o escribir un número directamente.
870
Juegos en desarrollo / Re:Alfomedor
Marzo 22, 2016, 05:00:38 PM
Es un juego entretenido, pero deberías mejorar la visibilidad de los viandantes y la alfombra, además es muy extraño que son tan pequeñitos en comparación con las de arriba.