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

1681
Cita de: LowHertzs en Abril 25, 2014, 10:24:00 PM
estarias preguntando si está sobre la base de la plataforma verdad?
Sí c_base es una variable que me indica si la parte de abajo del jugador colisiona contra una plataforma. Esa parte de (!c_base) se puede mejorar, lo hice algo a la carrera.

Cita de: LowHertzs en Abril 25, 2014, 10:24:00 PM
pero tu definiste las plataformas con movimiento como solidas para el "player" sin definirlas como tal

No, las plataformas móviles las cambié a no sólidas (desmarqué la casilla). Lo que me indica que hay colisión contra una plataforma móvil, aunque no sea sólida, es la función collision_rectangle()


la verdad es que hay muchas maneras de solucionar el error de que el jugador se bloquea cuando choca lateralmente con los bloques de piso. No me atrevo a darte una porque seguro hay otra más eficiente. El caso es que yo jamas he usado sólidos, así que no tengo experiencia lidiando con ellos, creo que es posible solucionar el error incluso dejando el piso como sólido.
1682
Cita de: LowHertzs en Abril 25, 2014, 09:28:51 PM
Estoy usando GM:S, ese es un ejemplo que un compañero puso en el foro, y yo lo estoy editando a mi gusto para partir de esa base.

XD Ya había modificado el ejemplo en GM8. Bueno, lo importé en GM:S y parece que va bien. Dejé de usar eventos de colisión para las plataformas. Las dos plataformas móviles las hice hijas de un objeto plataforma padre para manejar las colisiones en un solo código. El objeto que usas como suelo lo dejé como sólido, pero esto hace que al chocar de lado contra ellos el jugador se detenga, incluso si está en el aire. Modifiqué el origen del sprite y su máscara

MMM, me está dando problemas el subir el archivo como adjunto, acá lo dejo
https://www.mediafire.com/?009qk1pwsyff7ve
1683
Cita de: LowHertzs en Abril 23, 2014, 09:00:51 PM
el fallo viene cuando salto hacia una de estás y le doy por un lado, cuando esto sucede la plataforma para su movimiento y se bloquea

Yo dejaría de usar solid para las plataformas, y programaría las colisiones sin hacer uso de un evento de colisión.

Según la mecánica de tu juego, es importante diferenciar si se contacta la plataforma desde arriba (caer en ella) o desde los lados (chocar contra ella y no quedar sobre ella). Pero estás usando un evento de colisión para aterrizar en la plataforma. En lo que yo he probado, los eventos de colisión me dan resultado cuando quiero saber si se hizo contacto con algo, pero sin que me importe con qué zona exacta (si fue con un borde, con la parte de arriba o de abajo).

Personalmente no usaría eventos de colisión, para mi las funciones de colisión en STEP son más responsivas. El ícono de tu post está como GM:S, pero el archivo que subiste está en formato GM8. Si tienes la versión pro de GM8 también se pueden usar las variables bbox para detectar los bordes de las plataformas y controlar qué pasa cuando se choca de lado o desde abajo con la plataforma, aunque se puede hacer esto con un poco más de trabajo en la versión lite



1684
A ver, empecemos por el principio.

Cita de: juanbustos en Abril 25, 2014, 06:24:32 AM
se suponia que el objeto que avia puesto en todos lo niveles se transformaria en el personaje que elegiste

No digo que no se pueda, pero esto no es lo más óptimo ni más lógico y a la larga te puede dar problemas. Si pones un objeto jugador en cada habitación, al cambiar de habitación la vida, el poder, las balas, la fuerza, el marcador o demás información que tenga tu personaje se va a perder, va a ser como si lo que hiciste en la habitación anterior no cuenta. por eso es que la transformación no se mantiene después de pasar de nivel, como dices.

Hablando del objeto jugador, no se necesita (casi diría que no se debe) ponerlo una y otra vez en cada habitación distinta. En un juego de un solo jugador, sólo se debería usar un objeto jugador. Ese objeto se marca como persistente (en las propiedades del objeto) y se coloca nada más en la primer habitación jugable. Habiendo marcado al objeto jugador como persistente, al cambiar de habitación su información (variables) se va a mantener (que generalmente es lo que se quiere, aunque no siempre).
1685
Preguntas y respuestas / Re:ayuda con la imagen...
Abril 25, 2014, 03:11:19 AM
Claro, una posición en ua pantalla de ciertas medidas no va a ser exactamente la misma en otro dispositivo con otro tamaño de pantalla. Nada que no se solucione echando un vistazo al manual, incluso trae ejemplo
http://docs.yoyogames.com/source/dadiospice/002_reference/windows%20and%20views/display_get_gui_height.html

Posicionar ad de acuerso al tamaño del GUI:
ads_move(0, display_get_gui_height() - ads_get_display_height(0), 0);
The above code will set an advert to display at the bottom left-hand corner of the display.

Y si eso no funciona, como alternativa se puede usar
display_get_width();
display_get_heighth();

que es lo que usa el ejemplo de ocarina para saber las dimensiones del display y posicionar la publicidad relativa a esas dimensiones. Si el problema es que la publicidad no se posiciona como quieres, ayudaría que pusieras el código que usas
1687
Preguntas y respuestas / Re:duda sobre movimientos
Abril 24, 2014, 11:18:45 PM
Difícil adivinar qué está mal si no das detalles del código que usas. Lo más recomendable sería que subieras el proyecto para ver qué sucede
1688
Bueno, Killer ya dio la solución más simple.  Si es extraño cómo se comporta tu sistema de habitaciones, el comportamiento por defecto es que al reiniciar una habitación los enemigos aparezcan como originalmente están definidos en su evento CREATE, a menos que haya una persistencia especificada
1689
1. ¿Tus enemigos o la habitación son persistentes? Me imagino que el juego tendrá más de una habitación cuando lo termines, ¿no?
1690
Cita de: eulogioep en Abril 23, 2014, 08:42:22 PM
Ya intenté esto que me dices, pero al empezar el juego de nuevo, las variables de los enemigos no se reinician y es como si empezaras el juego desde donde mueres.

Puedes hacer un script que reinicie las variables de los enemigos, o puedes usar un ini para saber si se debe mostrar la primer habitacion o no. Si la primera habitación es la del logotipo, al usar un game_restart() sin nada más, siempre se va a mostrar al inicio.

EDITADO:Pregunta: Si al hacer room_goto() las variables de los enemigos no se reinician ¿es porque hiciste persistentes al os enemigos? A lo mejor se me está escapando algo, pero se supone que si los enemigos no son persistentes, al cargar la habitación creo que tendrían que volver a empezar con sus variables originales.
1691
Cuando el personaje muera o el juego se acabe, en lugar de reiniciar el juego game_restart()
haces un room_goto() a la segunda habitación.
1692
Bueno, se supone que no debemos contestar a mensajes que no tienen el ícono del game maker, como en este caso. Luego dentro del mensaje pones el ícono de GM8, con el cual no se puede hacer nada de ventas dentro del juego, sólo con GMS.

Lo que pides se llama In App Purchase, el manual de GM:S lo explica y trae un enlace a la página de YoYo donde se incluye el códigos necesario para inicializar la IAP, adquieir un producto y majenar el evento asíncrono
1693
Cita de: YOR en Abril 23, 2014, 04:19:52 AM
Cita de: penumbra en Abril 22, 2014, 07:14:45 AM
¿Qué es lo que quieres hacer mediante Event_perform()?

Lo que quiero hacer es definir los eventos y sus respectivas acciones de cualquier objeto en el room haciendolo exclusivamente por codigo GML, sin la necesidad de abrir la ventana donde se pone "add event" y luego se arrastran las acciones(drag and drop).. Se puede hacer eso?

Por curiosidad... ¿Por qué quieres hacer eso? Nunca lo he intentado, pero me imagino que es posible hacerlo, me imagino que tendrías que simular la ejecución de todos los eventos de game maker (no todos, pero todos los que se necesiten para que tu juego trabaje) en un orden específico. SI se te olvida especificar un evento, o si pones un evento en un orden incorrecto, error, y ni qué poner todo el código en una sola ventana afecta la legibilidad del mismo, pero bueno, para gustos, colores.

Cita de: YOR en Abril 23, 2014, 04:28:23 AM
segun el ejemplo que me diste...entonces el event perform() va a  ejecutar la accion asociada al evento de teclear "Z" sin la necesidad de que yo (el jugador) sea el que presione la letra z verdad? O el codigo event_perform( ev_keypress, ord("Z")); funciona de la misma forma que if keyboard_check(ord("Z")) {//la accion} puesta en un evento step?

Sí, keyboard_key_press(key) simula la presión de la tecla, como si el usuario lo hubiera hecho.
1694
Se trata de darle una posición aleatoria (en X) al momento que se crea el objeto. Es simple, por ejemplo

randomize()
instance_create(irandom_range(0, room_width), -1, objeto)

Eso funciona, pero el inconveniente es que el objeto puede crearse muy lejos del jugador, en cualquier parte de la habitación). Se solucion especificando un rango menor en X, cercano al personaje, para que los objetos caigan cerca de él y así se aumente la jugabilidad. El rango ya lo decides tú, dependiendo de qué tan fácil o difícil quieras que sea el juego
1695
¿Qué es lo que quieres hacer mediante Event_perform()?