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

136
Desde un objeto controlador se usaría la función
[gml]instance_create(x, y, objeto_a_crear)[/gml]
x e y son las coordenadas donde se crearía la instancia del objeto, y tú tienes que especificarlas, por ejemplo, para crear la mesa en el punto donde se hace click:

EVENTO GLOBAL LEFT PRESSED
[gml]instance_create(mouse_x, mouse_y, obj_mesa)[/gml]
137
En el objeto puerta:

[CREATE]
[gml]image_speed = 0[/gml]

[STEP]
[gml]
if distance_to_object(obj_player) < 64
     sprite_index = spr_puerta_abierta
else
     sprite_index = spr_puerta_cerrada
[/gml]

Cambia el 64 por la distancia que creas conveniente.
138
En la línea 3 estás escribiendo
[gml]bala.instance_create()[/gml]
pero debería ser
[gml]bala = instance_create()[/gml]
139
Cita de: vzk91@gmail.com en Octubre 31, 2015, 03:39:56 PM
Cual seria la forma correcta de hacerlo para no malgastar recursos ??? Porque ahora mismo mi escenario solo tiene una casa y un arbol para hacer las pruebas, pero obviamente va a tener muchos mas elementos con los que podra chocar el player....
Si el usuario va a tener control sobre el jugador en todo momento, entonces usar física en el jugador no me parece ventajoso y hasta te puede dar problemas a futuro en comparación con la forma "normal". Se puede usar física, no es que esté prohibido, pero no le veo mucho sentido, sin contar que la simulación de un entorno con física requiere más cálculos que un movimiento normal de objetos sin física. Y si tu juego va a ser grande, pues habrán más cálculos. No sé de algún proyecto RPG 2D que use física en el personaje principal, ya que el control se puede hacer de la manera tradicional. Me parece (opinión personal) que difícilmente se justifica usar física en el personaje principal, a menos que se quiera implementar un movimiento "raro" o "poco común" (en términos de lo que se ve comúnmente en un RPG clásico)

Generalmente se usa física en objetos inanimados que no son controlados por el jugador, como rocas que caen y rebotan, partículas/proyectiles que chocan contra otros objetos, objetos mecánicos como engranes, balancines, etc. Sé que GMS incluye un tutorial de fisica donde se controla una nave mediante funciones de física, pero es más que nada un proyecto para introducir las funciones y dar una idea de cómo usarlas, y porque la nave y los otros objetos tienen la peculiaridad de que en todo momento se ven afectados por la inercia, efecto que se consigue "naturalmente" al usar física pero que difícilmente se ve en personajes de RPGs (y que también puede conseguirse sin física, claro)

Las colisiones simples en personajes animados, como chocar contra paredes y árboles cuando se camina/corre, se pueden implementar de la manera tradicional, sin recurrir a física.
141
Cita de: evansmako123 en Octubre 30, 2015, 11:24:33 PM
Las coordenadas de los disparos serian 230,270 y 310.
Esto no resulta claro, ya que para definir un punto siempre se necesitan un PAR de coordenadas: un valor para x y otro para y. Supongo que quizás estás refiriéndote al ángulo en el que debe disparar el enemigo.

No es necesario cambiar de sprite por cada dirección/ángulo. Un único sprite de disparo se puede girar para apuntar a la posición deseada, pero esto también depende de cómo quieres que se vea el sprite.

GM ya posee variables para definir una dirección de movimiento, así que símplemente tienes que usar algo como esto:
[gml]
var bala;
bala = instance_create(blah blah, pasar argumentos)
randomize()
bala.speed = 10
bala.direction = choose(230, 270, 310)   //Elegir dirección del disparo al azar, de entre tres posibilidades
obj_enemigo.image_angle = 310    //Esto gira al sprite del enemigo para que coincida con la dirección de la bala. Si el código se coloca en el objeto enemigo, entonces borrar "obj_enemigo."
[/gml]

142
Ya veo, pero entonces, el error de que el objeto selección no contacta con la casilla es por el código que usas en el objeto selección. Igualmente, sigo pensando que no es necesario utilizar este objeto selección, ya que la selección puede hacerse sin un intermediario, y directamente leer o activar o cambiar propiedades de X casilla.

Guacusio indicó cómo hacer la selección de una casilla en su mensaje anterior. Si de todas maneras quieres usar el objeto selección, entonces tendrías que dar más detalles de qué código se usa en ese objeto para seleccionar casillas.

Por ejemplo, si quieres que el objeto selección detecte la casilla que está abajo (sin importar si en medio hay un jugador) se puede usar (en un evento de click)

[gml]casilla = collision_point(obj_seleccion.X, obj_seleccion.Y, obj_casilla, false, true)[/gml]

Luego, si se quiere cambiar alguna propiedad de esa casilla
[gml]
if (casilla != noone)
     casilla.color = "rojo"
[/gml]
143
Puedes aumentar el tamaño de la habitación, y usar vistas, para mostrar sólo una sección del mapa. La vista seguiría al objeto jugador. Como es de esperarse, con mapas muy grandes, el tamaño del juego crecerá mucho y también el tamaño de RAM requerida para cargar los fondos.

Una alternativa en ese caso sería crear un mapa a base de celdas, y dibujar sólo las celdas de la región donde "virtulamente" esté el personaje, aunque esto complicaría un poco las cosas en comparación con el método simple de usar vistas. Si los mapas no son TAN grandes, entonces usar vistas sería una buena alternativa (no deberían ser tan grandes, ya que mencionas que es un juego para móviles).

Personalmente siempre he sido de la idea de que no es muy recomendable comenzar con un RPG si eres un recién iniciado, pero, bueno, suerte con tu proyecto.

Por cierto, no sé si sólo se trata de un error, pero el ícono del post es de GM8 y también en el primer mensaje mencionas GM8 y Android. Con GM8 no es posible exportar ni a Android ni a iOS. En ese caso es necesario usar GM Studio.
144
Preguntas y respuestas / Re:Sprites distorsionados
Octubre 30, 2015, 02:00:02 AM
Cita de: Kain88 en Octubre 29, 2015, 09:55:13 PM
Lo estoy ejecutando en pc, no hay alguna manera de arreglarlo?
Sube tu proyecto o un proyecto similar con la misma problemática para poder echarle un vistazo
145
De acuerdo a tu descripción, mencionas que en el espacio de una casilla pueden coincidir hasta tres objetos: la casilla, el personaje y la señal. Yo te recomendaría que prescindieras de usar objetos para marcar las casillas, ya que no es necesario. El propio objeto casilla puede encargarse de dibujar un sprite de marca para indicar si su propiedad "marcada" es true o false.

Cita de: Strod en Octubre 29, 2015, 08:02:57 PM

-El caso es que si encima de la casilla hay un personaje al clickear sobre esa casilla, el programa no reconoce el color de la casilla (o lo que es lo mismo el tipo de objeto que es) porque hay un personaje en ella
No entiendo por qué dices que el programa no reconoce el color de la casilla, ya que GMS no trabaja así: En principio, GM no discrimina los clicks, si tres objetos tienen un evento de click, y los tres ocupan una misma zona (están traslapados), el evento de click en los tres objetos será ejecutado cuando el usuario haga click en la zona donde convergen las tres máscaras de colisión. Este comportamiento es el comportamiento por defecto de GMS, tan es así, que varias preguntas de la comunidad buscan evitar este comportamiento: cómo hacer que GM sólo detecte un click en varios objetos traslapados.
146
Preguntas y respuestas / Re:Orientacion en ANDROId
Octubre 29, 2015, 05:33:58 AM
Ah, vale. Ya entendí. Si se trata de cambiar la orientación en tiempo de ejecución, entonces la respuesta es que no se puede  :'(

http://gmc.yoyogames.com/index.php?showtopic=646996
Citar
The orientation can be locked in the Global Game Settings and it can be locked at runtime (though only to the current orientation) - see os_lock_orientation().

But it cannot be changed/forced at runtime
148
Cita de: NiuWeb en Octubre 29, 2015, 02:15:34 AM
¿Entonces sería algo como tomar todos los objetos y en la surface dibujar un sprite de ellos a escala para que TODO el contenido se guarde?
Esencialmente sí.
149
Vas a tener que usar surfaces.

Tendría que haber una surface de destino donde se dibuje la captura y después los sprites de cada objeto, indicando la posición que ocuparían en dicha surface. La captura del pantalla se puede tomar directamente de la application surface, que no es más que la surface donde GMS dibuja el juego.
150
Preguntas y respuestas / Re:Glich en mi mapa
Octubre 28, 2015, 05:19:22 AM
Ya probaste a usar el botón con ícono de brocha/escoba para limpiar la caché del compilador?