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

1066
No entendí muy bien, pero suponiendo que cada jugador tiene una oportunidad de tiro, y si falla pierde el turno...

[CREATE] del controlador
[gml]globalvar turno, oportunidad;
turno = 0         //0 = turno del jugador 1, 1 = turno del jugador 2
oportunidad = 1                //El usuario tiene una oportunidad para hacer su siguiente tiro (siempre que no falle)
[/gml]

En el jugador 1 y 2, debe haber código para saber si el proyectil dio en el blanco o no, si p1 o p2 acierta, pues aumentará su marcador, pero si falló, entonces hay que avisar que
[gml]oportunidad = 0[/gml]

Luego, en [STEP] del jugador 1
[gml]if (turno == 0)        //Si durante mi turno...
{
     if ( !oportunidad )             //... fallé el tiro...
     {
          turno != turno             //se cambia de turno al jugador 2 (si es 0 se hace 1, si es 1 se hace 0)
          oportunidad = 1   
     }

     //Más acciones que pasan cuando es turno del jugador 1

}[/gml]
Aquí se observa que la variable oportunidad es una variable que sirve para controlar la oportunidad de cualquiera de los dos jugadores, que sirve para informar si hay un fallo (de cualquiera) y que nos estamos apoyando en la variable turno para decidir qué jugador debe disparar. En el jugador 2 la idea es la misma
[STEP] jugador 2.
[gml]if (turno == 1)        //Si durante mi turno...
{
     if ( !oportunidad )             //... fallé el tiro...
     {
          turno != turno       //se cambia de turno al jugador 2
          oportunidad = 1     //El otro jugador tiene una oportunidad
     }

     //Más acciones que pasan cuando es turno del jugador 2
}[/gml]

Sobre la duda de "como lo detengo para que no haga esa cosa a cada step" creo que queda claro que eso depende de la condición que uses en el if. Sólo se puede entrar al IF si oportunidad es 0 o false, y cuando eso pasa, en el bloque mismo te aseguras de que sólo se ejecuta una vez cambiando el valor de la variable oportunidad a true o 1, por lo que el if no se vuelve a ejecutar hasta que uno de los jugadores falla.

... o eso creo, a lo mejor hay algún fallo, pero la idea es esa.  :-[ De hecho, las variables turno y oportunidad pueden ser dos variables (incluso no es necesario que sean globales) declaradas en cualquiera de los dos objetos jugador, pero como se usan en ambos, a mi me gusta usar un controlador con variables globales, que aparte puede servir para dibujar esas variables y otras cosas sin que afecte el dibujo de de los jugadores
1067
Preguntas y respuestas / Re:efecto gravedad cero
Noviembre 03, 2014, 09:38:43 PM
para rotar con las flechas , por ejemplo , en el evento de la tecla flecha derecha
[gml]image_angle -= 1[/gml]

Para propulsar la nave, en el evento de la tecla flecha arriba
[gml]
speed = 8
direction = image_angle
[/gml]

y en STEP de la nave
[gml]friction = 0.1[/gml]

Para disparar, en el evento de la tecla flecha abajo tienes que hacer algo como[gml]
if (disparar)
{
     instance_create(x + lengthdir_x(32, image_angle), y + lengthdir_y(32, image_angle), obj_bala);
     disparar = 0
     alarm[0] = room_speed * 0.5
}[/gml]

Evento alarma[0] de la nave
[gml]disparar = 1[/gml]

Eso a grandes rasgos, no esperes que funcione a la primera. Seguro le faltan cosas, como declarar la variable disparar en [CREATE] de la nave. Quizás no entendí bien lo de la propulsión, sobre todo lo de gravedad cero, ya que no recuerdo un juego de naves en el que no haya gravedad 0 (de lo contrario todo "caería" hacia algún lado)
1068
Cita de: Fulguitron en Noviembre 03, 2014, 09:16:33 PM
Lo que aún no me ha quedado claro es donde puedo ver lo de la view, supongo que en algún sitio dirá que el objeto que tengo como protagonista es la view 0 pero ni se donde está ni se como saberlo.

Acá lo dice
1069
Cita de: serviciosadistancia en Noviembre 03, 2014, 08:40:08 PM
si hago un controlador no se en que evento controlar las variables para el cambio de turno

Bueno, como no se sabe en que momento puede ocurrir un cambio de turno (porque depende del desempeño de los jugadores), el evento adecuado para hacer un cambio de turno es un evento que se ejecute recurrentemente, para que en cuanto se cumplan las condiciones de cambio de turno, se produzca el cambio. Sólo dos eventos en GM cumplen con esa característica de recurrencia, pero uno de ellos, DRAW, se usa más que nada para dibujar cosas, así que la opción más común sería usar...


alguno de los eventos STEP
1071
Cita de: Marth en Noviembre 03, 2014, 07:36:31 PM
pero resulta que primero actúan los objetos y luego la room.
¿Qué es lo que quieres lograr? Ese es el orden de eventos de toda la vida de GM, el mismo manual lo indica. Primero se llama al evento CREATE de los objetos, y antes de eso no ocurre otra cosa, porque lo normal es que primero se creen las variables de esa instancia y luego, en otros eventos, se puedan modificar ANTES de STEP.

No entiendo la complicación, si se trata de cambiar el valor de una variable antes de que el usuario comience a jugar, para eso se puede usar el CREATION CODE de las instancias que mencionó Clamud, o de otra forma, usar el evento GAME START o el evento ROOM START o el botón CREATION CODE en la pestaña settings del editor de rooms
1072
Cita de: Mega G en Noviembre 01, 2014, 01:53:31 PM
Después de tanto tiempo no sé si al final se habrá suspendido el podcast que tenía planeado luckylandia007, pero la idea era muy buena y el episodio piloto que hizo a mí me gustó, espero que siga adelante. Si lo ha abandonado podríamos intentar hacer otro los demás usuarios.

Podría haber reviews de juegos de la comunidad, entrevistas a makeros, etc.

Ojalá luckylandia007 de señales de vida pronto, porque estaba próximo a subir el segundo podcast (o el primero oficial, después del piloto) y quién sabe qué paso que ya no se han tenido noticias de él. No creo que lo haya suspendido (espero), porque tenía planes de hacer el siguiente y había acordado contar con la colaboración de tupadre para ese siguiente podcast y estaba muy animado con el proyecto.
1073
Probablemente estés empleando mal una variable o usando incorrectamente un evento de ratón...

Dejo un ejemplo:
http://www.mediafire.com/download/75cbmfjn7ay861i/seleccion_penumbra.gmz

No uso un objeto flecha, uso un sprite flecha que se dibuja al lado de la instancia seleccionada. Sólo se puede seleccionar una pelota a la vez, si se hace click en un espacio vacío, se borra la selección. La selección se hace en el objeto pelota, la deselección y el dibujo del sprite flecha en el controlador
1074
No tengo experiencia exportando a android, pero ¿no es posible que en la configuración de studio tengas selecionada únicamente una arquitectura (compatible con la tablet) y que te falte elegir la arquitectura adecuada para teléfonos inteligentes?
1075
Preguntas y respuestas / Re:Minimapa relativo al personaje
Noviembre 01, 2014, 10:50:02 PM
Bueno, yo nunca he hecho un minimapa, pero se me ocurren varias ideas.

Una idea es usar una segunda vista, como dijo kostra.

otra es tomar una captura, guardarla en una surface, recortar la surface para que sólo quede la zona cercana al jugador y dibujarla en donde quieras que esté el minimapa.

Obviamente estos métodos tendrían el inconveniente de que al reducir la imagen habría distorsión, además habría que modificar el juego para que al tomar la captura, el jugador no se dibujara y después de tomar la captura, volver a habilitar el dibujo del sprite del jugador, de lo contrario, el propio sprite del jugador saldría en el minimapa, y creo que no se vería bien.

Otra idea sería que todos los objetos o instancias que potencialmente pudieran aparecer en el mapa tuvieran una variable "display_on_map" que inicialmente fuera 0 y se hiciera 1 si están a una distancia más o menos cerca del jugador (indicando que está en el rango del minimapa) y volviera a 0 si el jugador se aleja de ellas. Luego, todo sería usar cálculos simples para que el mapa fuera un rectángulo o círculo, en su centro siempre estaría dibujado el jugador (un punto, una figura geométrica, no sé)

Si un objeto tiene su variable "display_on_map" en 1, se revisa a qué distancia está del jugador, y para colocarlo en el mapa, esa distancia se divide en 2, 3, o cualquier número dependiendo de las dimensiones del mapa, así se mantendría una proporción entre las distancias objeto-jugador del juego y las distancias objeto-jugadoren el mapa
1076
Cita de: mamaffia en Noviembre 01, 2014, 09:12:48 PM
al seleccionar esta segunda pelota la flecha se dibuja relativa a la que habia seleccionado primero, la fuerza en cambio sí se aplica a la nueva pelota. Si destruyo cualquiera de las dos pelotas ahí sí la flecha funciona bien, cuando hay una sola pelota en la room se ubica bien pero si son dos o más objetos siempre queda destinado al primero.

Si revisas tu código:
if (seleccionado=1) && lanzado=0
{
if! instance_exists(objflecha)
{
instance_create(x,y,objflecha)
}


Te darás cuenta que en ningún momento estás actualizando la posición x/y en donde se debe crear el objeto flecha. Me dirás: "¿cómo que no? estoy usando instance_create(x,y,objflecha) en donde le digo que cree la flecha en la x y la y del objeto pelota en el que estoy haciendo click".

Bueno, pues ahí está el error, Si hay más de una instancia del objeto pelota en la habitación, para game maker, obj_pelota SIEMPRE va a significar LA PRIMERA instancia de ese objeto. Por eso cuando destruyes uno de los dos sí funciona, porque la primer instancia deja de existir y la segunda instancia se convierte en la primera.

¿Qué quiere decir esto? Que cuando hay más de una instancia de un objeto en una habitación, no es posible usar el nombre de ese objeto para hacer referencia a una de sus instancias (a menos que siempre quieras referirte a la primera, lo cual casi nunca será el caso).

Intenta esto (en un objeto controlador, no en la pelota)
[gml]
if (seleccionado=1) && lanzado=0
{
    var cc;
    cc = collision_circle(mouse_x, mouse_y, 20, obj_pelota, true, true)
    if !instance_exists(objflecha) and (cc != noone)
         instance_create(cc.x, cc.y, objflecha)
}[/gml]
1077
OK. Con esas imágenes cambia la cosa.

A la bala dale una densidad de 0.1

Si le das valores a linear damping y angular damping, eso provoca que haya una atenuación en la velocidad de la bala, como si le pusieras fricción (no es exactamente lo mismo que la fricción). Creo que por eso las balas se comportan del modo que se ve en el vídeo. Esos valores ponlos a cero.

La fricción en 1 probablemente es mucha, intenta bajarla a 0.1

Cambia el with() a esto (debe ejecutarse en el objeto nave. me imagino que así lo tienes)
[gml]
with (disparo)
{
     phy_rotation = other.phy_rotation                //El +40 no debe ir, no sé por qué pusiste eso.
     phy_bullet = true;
     physics_apply_local_impulse(0, 0, 0 -120);
}
[/gml]

Creo que así debería funcionar, aunque no lo he probado

1078
¿Por qué has decidido usar esto?
[gml]physics_apply_local_impulse(0, 0, -Player.x , -Player.y);[/gml]
Es decir, ¿por qué usas la posición -player.x y -player.y como los valores del impulso? ¿Qué relación puede haber entre la posición del jugador y la magnitud del impulso?

Otra cosa, si las balas tienen masa, se van a ver afectadas por la gravedad, lo cual en un juego de este tipo no es típico, podrías dejar la densidad en 0 para que eso no pase.
1080
Preguntas y respuestas / Re:Marketpalace
Octubre 30, 2014, 11:04:10 PM
Gracias, zorge. La verdad, más que nada pretendo enfocarme en hacer assets gráficos o de sonido y no en código. Por lo que he visto, lo que más hay son scripts, y unos muy buenos, en cambio, la mayoría de assets gráficos que he visto a mi se me hacen demasiado simples. También esperaba encontrar mayor cantidad de recursos en general, y de momento no hay tantos. Ya veremos cómo evoluciona esto del marketplace.