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 - Killer

76
Preguntas y respuestas / Re:Ayuda para desbloquear
Mayo 05, 2014, 02:15:57 AM
Te doy la misma respuesta que di en ese tema, el GMS trae un su propio tuturial al respecto.

Si no te aparece entonces actualiza tu GMS. En las versiones más recientes los demos y tutoriales no vienen incluidos con la instalacion de GM, el programa los descarga la primera vez que se abren, de esta manera no inflan el tamaño del instalador.
77
Mostrar un mensaje requiere modo de ventana, pasar entre mode de ventana y modo pantalla completa o viceversa es propenso a eliminar surfaces, todo lo que se dibuja normalmente en GM se dibuja en una surface general.

Cuando usas tu código en pantalla completa forzas el programa a ir a ventana, lo que causa que la surface general se borre y todo lo que queda es un fondo blanco hasta que la superficie pueda dibujarse de nuevo, cosa que no hará hasta que el mensaje deje de pausar el juego.
78
GameMaker Studio trae su propio tutorial sobre esto:

79
Nah tranquilo, acá no hay nada personal, igual ya le dimos muchas vueltas al tema, cada quien tiene su opinión y es obvio que eso no va a cambiar.

Con Marth reportándolo ya quedará en manos del staff de Yoyo ver si es bug o no, en todo caso disculpa si en algún momento soné grosero o terco.
80
Pero no dices a través de que análisis o de que información llegas a esa conclusión,  yo puedo decir que descubrí que las ranas que viven 300 años sacan alas, pero cuando me pregunten como llegue a esa conclusión yo no puedo decir, bueno primero agarre una rana y le hice una prueba de ADN y con algunos análisis e información demostré que es cierto.

Pero bueno, vamos a hacer la prueba como tú la haces, con la adición de algunos elementos de control, primero otro objeto que avanzara en la posición contraria, segundo una variable de control que indicará el momento justo en que el evento se activa, tercero, un contador de steps:



Como vemos en la imagen, los objetos empiezan en la misma posición, moviéndose en direcciones opuestas, 1 pixel a la vez.

Cuando el objeto superior llega al borde de la room aún no se ha activado el evento intersect boundary, porque la máscara de colisión aún no ha salido de la room, no es hasta el próximo step que el movimiento del objeto lo enviara fuera de la room, lo que activa el evento Intersect Boundary, que con el código que tú mismo has propuesto lo enviara a la posición del step anterior y eliminara su velocidad. Como resultado, parecerá que no ha cambiado de posición, pero la variable de control de este objeto se cambiara para indicar que en efecto el evento ocurrió.

Cuando el objeto inferior llega a su borde puede pasar un pixel extra, este él es bug que estamos discutiendo, que según tu no es un bug, aún pasado ese pixel extra en el próximo step el objeto intentará seguir moviéndose, es hasta ese momento que el GM lo considera fuera de la room, y de nuevo tu código se activa, lo envía a la posición anterior y elimina su velocidad.

Por supuesto no planeo que tomes una simple imagen como prueba, por eso acá dejo el proyecto.  Si crees que me equivoco en algo y tienes la prueba de que el evento Intersect Boundary se ejecuta 1 step tarde después de haber ocurrido, o aún más tarde como decias en un post anterior, siéntete libre de demostrarlo, pero haciendo eso, demostrándolo, no solo diciéndomelo.

Me parece que lo que ocurre acá es que no entiendes completamente cómo funciona el evento, al evento no le interesa si el la máscara de colisión del objeto está al lado del borde del room, solo le interesa si la máscara se sale del room, igual que en los eventos colisión no importa si la mascaras de dos objetos están "tocándose", solo importa si una está sobre la otra.

Uff... pared de texto... en fin, si, el bug es insignificante pero nosotros no somos nadie para decir si puede afectar o no a alguien más, después de todo Marth lo notó.
81
Primero, los primeros dos argumentos en las funciones ini_write_real y ini_read_real deben ser strings, voy a suponer que estas declarando las variables guardado y ultima_habitacion en algún lugar con los valores de la sección y la llave del INI, pero me parece innecesario, considerando que son valores que no necesitan cambiar. Si de hecho guardado y ultima_habitacion no son variables sino el nombre de la sección y llave, debes ponerles comillas.

Segundo, la función ini_read_real recibe tres argumentos, si te hubieras tomado el tiempo de verla en el manual te darías cuenta de que está faltando el valor default, que es el valor que la función retornará si no encuentra la sección, la llave o el ini. Ese es el error que te esta tirando en este momento.

Tercero, no estas guardando el valor que retorna ini_read_real, debes guardarlo en una variable que puedas usar luego para hacer el cambio de room.
82
Preguntas y respuestas / Re:Bug en los Game Maker
Mayo 02, 2014, 08:03:57 AM
Y como exactamente hiciste esa prueba? porque cuando yo lo pruebo el evento Intersect Boundary también ocurre en el mismo step que es detectado. Lo que dice Penumbra es que hasta que el objeto no se mueva más allá del punto que GM considera "tocando el borde" el evento no ocurrirá, aunque en realidad ya debería haber ocurrido steps atrás.
83
Preguntas y respuestas / Re:Bug en los Game Maker
Mayo 02, 2014, 06:35:09 AM
De donde sacas que el GM necesita 2 steps para generar colisiones? Las colisiones son detectadas en el mismo step en que ocurren, puedes comprobarlo tú mismo,  crea un evento colisión que muestre un mensaje cuando ocurre y corre el juego a poca velocidad, en el mismo step que la colisión debería ocurrir recibirás el mensaje.

Aparte, si ese fuera el comportamiento esperado debería presentarlo en toda ocasión, pero en este caso el costado izquierdo y superior generan el resultado correcto, mientras los costados derecho e inferior se comen un pixel. El que funcione cuando se hace con GML no demuestra que así es como debería funcionar, solo que hay otras maneras de hacerlo.

Y como menciona Penumbra, es cosa de nada, por eso mismo no lo estoy reportando yo mismo, pero que sea una tontería no significa que no es un bug.

Por cierto, lo que te devuelven x & y son coordenadas, las coordenadas pueden tener decimales, pero a la hora de calcular colisiones y dibujar estas son redondeadas.
84
Me parece recordar que las funciónes y acciones para cambiar de room cambian inmediatamente el room sin terminar el ciclo de eventos. Pon la acción Stop Sound antes de Go to Room.

Outside Room significa que el objeto se ha salido de los limites del room, no que el room ha cambiado.
85
Preguntas y respuestas / Re:Bug en los Game Maker
Mayo 02, 2014, 12:33:52 AM
Intersec boundary no depende tanto de las coordenadas del objeto, sino de la máscara que tiene, pon el punto de origen del sprite fuera del area del sprite y aún asi verás que se detiene cuando el sprite toca el borde, sin importar si las coordenadas del objeto son negativas.

Con eso dicho, Marth tiene razón, 1 pixel se escapa a la derecha y abajo antes de que Intersec boundary funcione. Probablemente un error de redondeo, deberias reportarlo a YoYo, en el menú Help de GMS esta la opción Report a Bug.
86
Tienes el GM pirateado, no sé exactamente como esperas poder actualizarlo.

Quieres la última versión? cómprala.
87
Cita de: cancerbero666 en Abril 29, 2014, 12:00:06 PM
killer gracias si que funca, fallo mio tenia puesto algo en el create, si que se mueve incluso cuando esta parado, lo que pregunte antes mas arriba, era como hacer que el personaje empiece quieto sin animación, y que cuando dejes de pulsar las teclas también se quede quieto del todo sin animación, si se puede se agradece mucho la ayuda y el interés prestado.
Otra cosa he intentado probar el ejemplo que pusiste y me da error el de: exception reading asset from GMLfiles "config:: configs\default

El ejemplo fue creado con la versión 1.3.1307, y al menos puede abrirse desde la versión 1.2.1224, no puedo garantizar nada para versiones anteriores a esa. Si tienes una versión entre las que he puesto, asegúrate de que el archivo fue descargado por completo sin interrupciones.

Sobre quitar la animación cuando esta quieto, al if de movimiento agrégale un image_speed = 1 y un else con image_speed = 0 y image_index = 0



Cita de: kriss8725 en Abril 29, 2014, 04:25:44 PM
Ahora tengo el siguiente problema, cuando estoy presionando alguna tecla de dirección por ejemplo la derecha mi personaje comienza a caminar pero si inmediatamente suelto esa tecla y presiono la tecla hacia arriba el personaje continua con el movimiento hacia la derecha.

La naturaleza del código impide esa clase de comportamiento, el estado de cada tecla esta atado a su dirección específica y se actualiza en cada step, en tanto lo hayas puesto en el evento step.

Me temo que el problema es de tu lado, y sin más información no tengo como saber que lo causa.
88
He probado ambos códigos juntos y funcionan como deberian, si no te estan mostrando animaciones es por algo que tu haz puesto, por lo tanto solo puedo adivinar cual seria el problema. ¿Eliminaste lo que tenias antes para mover al objeto y cambiar su sprite?

Tambien a tener en cuenta es que el código asi como esta mantiene el sprite animado aún cuando no se mueve, así que si nisiquiera muestra esa animación probablemente cambiaste la variable image_speed a 0.
89
Las paredes son muy delgadas, mientras mayor sea la velocidad de la pelota mayor será el espacio que salte por step, si de casualidad el espacio saltado es el que ocupaba la pared no se reportará evento colisión y no rebotará la pelota.

Puedes usar máscaras o cajas de colisión personalizadas para aumentar el área de colisión de las paredes sin alterar su apariencia.
90
No puedes, GMS solo puede hacer modificaciones en el espacio asignado por el OS, que en el Android es invisible a menos de que este rooteado.

Quien sabe, ahora que se pueden hacer extensiones para android y iOS talvez en algún momento alguien haga alguna que pueda hacer lo que quieres, pero de momento no se puede.