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

1546
TECLA DERECHA quiere decir 1 de dos cosas, la que más te acomode:

1. Ir a eventos > keyboard > right, escribir sprite_index=spr_player_right

2. en [STEP], agregar el código:
   
   if keyboard_check(vk_right)
   {
        sprite_index=spr_player_right
   }


Lo mismo para la tecla izquierda, obviamente cambiando vk_right por vk_left y también el sprite_index
1547
Cita de: matiascarpello en Mayo 30, 2014, 09:32:32 PM
Es verdad no se me había ocurrido eso, pero hay un pequeño problema, y es que en mi juego va a haber un objeto que genere obstaculos completamente al azar cada 5 seg. y coimo tu me lo planteas serían dos objetos los que compondrían el aro, y ¿cómo hacer para que cuando se generen objetos al azar, si llega a tocar el aro salgan sincronizados? Por como lo veo no es posible.

La generación aleatoria sólo sería para una mitad del aro, supongamos que la izquierda "(", la mitad faltante la genera el aro izquierdo que se acaba de crear

En aro_izq [CREATE]
instance_create(x+30, y, aro_der)

CREATE solo se ejecuta una vez, cuando se crea la instancia, así cada aro izquierdo crearía su mitad derecha basándose en su propia posición
1548
Uniendo dos mitades. Viendo el aro, está compuesto por dos "paréntesis", el paréntesis izquierdo "(" sería el objeto con la profundidad mayor y el paréntesis derecho ")" tendría la profundidad menor. Ambos viajarían a la misma velocidad para dar la impresión de que son un solo objeto aro ().
1549
Un obstáculo normalmente se crea así
instance_create(50, 100, obj_obstaculo)

Para crear tres obstáculos en posiciones aleatorias
randomize()
if instance_number(obj_obstaculo < 3)
{
     instance_create(irandom_range(0, room_width), irandom_range(0, room_heighth), obj_obstaculo )
}
1550
Preguntas y respuestas / Re:Doble colisión
Mayo 28, 2014, 08:42:52 PM
El código detecta colisiones, si se pone en un evento de colisión, no tiene mucho sentido, el evento de colisión hace la misma labor, por lo que el código entonces se podría desechar. Piensa como pensaría el GM  ;D (Por supuesto que se puede usar el evento de colisión y desechar el código, como dije, hay distintas maneras de hacerlo, pero si se usan los eventos de colisión es necesario crear más variables para comprobar la doble colisión )
1551
La vida se resta continuamente porque la resta está en STEP y no hay ninguna condición que evite que sólo reste una vez, necesitas otra variable para evitar que se quite vida constantemente

if (atacar) and (daniar)
{
     restar 1
     daniar = false
     alarm[0] = room_speed * 2 //conceder dos segundos de invencibilidad al jugador
}

ALARM[0]
{
    daniar = 1
}   

No entiendo bién por qué usas esta condición
if (distance_to_obj(obj_player) < 100) && (distance_to_object(obj_player) > 50)

Yo la dejaría en
if (distance_to_obj(obj_player) < 100)

Para hacer que el ataque se dibuje debes usar
sprite_index = spr_ataque
pero necesitas ser cuidadoso con los estados o pasará lo mismo que con la resta de vida, se podría repetir más de una vez la animación.

1552
Preguntas y respuestas / Re:Doble colisión
Mayo 28, 2014, 08:17:18 PM
Hay muchas maneras de lograrlo, por ejemplo:

if place_meeting( playerRojo.x, playerRojo.y, obj_metaRoja) and place_meeting( playerAzul.x, playerAzul.y, obj_metaAzul)
     //Cambiar de habitación



1553
¿Qué no es lo mismo? ¿Qué quieres hacer?

Si a 10.5 le quito los decimales me queda 10, que sería lo mismo que hacer floor(10.5)

Si lo que quieres es mantener el número real, pero en pantalla sólo mostrar la parte entera, creo que se puede usar la función string_format() con el último parámetro en cero (no lo he probado, pero a lo mejor funciona)

1554
Suponiendo que el sprite original del jugador mira hacia la derecha, me imagino que usas image_xscale = -1 para que se voltee a la izquierda

En [STEP] del ObjetoGolpeColision, para definir su posición correcta:

x = obj_player.x + sign(obj_player.image_xscale) * separacion
y = obj_player.y -10

Cuando el jugador mira a la derecha (orientación original), image_xscale es igual a 1, por lo que el objeto ObjetoGolpeColision se colocará a la derecha del jugador, "separacion" determina qué tan a la derecha se coloca el objeto (debes probar valores para que quede a la altura del puño)

Cuando el jugador mira a la izquierda, image_xscale es -1,  por lo que el objeto ObjetoGolpeColision se colocará a la izquierda del jugador, a una distancia determinada por "separacion"


1555
Preguntas y respuestas / Re:comunicar PC Android
Mayo 27, 2014, 09:33:14 PM
No estoy seguro, pero no creo que se puedan comunicar dos juegos así como quieres, no tiene que ver tanto con que uno sea versión PC y otro android, sino que GM:S no tiene funciones para establecer conexiones entre clientes de manera directa.

Me parece que forzosamente tienes que usar un intermediario, es decir un programa host que esté alojado en un servidor web, cada cliente mandaría datos al host y éste se encargaría de procesarlos y enrutarlos, pero como digo, no sé bien. Yo en esto estoy muy verde y apenas voy empezar a hacer pruebas con las funciones de red del GM:S
1556
Preguntas y respuestas / Re:contador de rooms
Mayo 27, 2014, 08:03:35 AM
Quizás algo se me escapa, pero no entiendo la relación entre contar habitaciones y hacer que ciertos objetos ejecuten código. Directamente puedes usar un IF para saber si estás en determinado room y entonces ejecutar código/script. Obviamente que se puede hacer algo como lo que pides

if (contador_de_habitacion == xxxx)
    //hacer algo

pero no le veo el caso a usar un contador.

También se puede usar el botón

Para colocar alguna bandera que indique qué código ejecutar dependiendo de la habitación, o para llamar scripts específicos según la habitación
1557
Cita de: djboro88 en Mayo 26, 2014, 11:10:04 AM
¿Y alguna otra forma, sin necesidad de poner un DLL?
¿GM no lleva alguna funcion de bajar el volumen?

¿Tú qué crees?
http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/sounds/index.html
1558
Sólo puedo pensar que tienes este código en [CREATE], y por eso nunca se actualizar el valor de la variable direccion. Al darle click al botón de ejecutar en GM:S, tal vez el puntero siempre queda a la izquierda del objeto cuando éste se crea  :D.  El código debe de ir en [STEP]

Si el objeto es estático, x nunca dejará de ser 612, sin importar cuánto se mueva el ratón.
1559
Cita de: Retsal en Mayo 26, 2014, 12:00:34 AM
La alarma es para el cooldown, dura 3 seg y no me da problemas... el problema es que la animación de lanzar la maleta no para a no ser que mueva al personaje (cambia el sprite a correr).
El código:
if image_speed > 0
{
     if image_index > image_number - 1 {sprite_index = spr_oficinista_stop_der};
}

no me funciona, sabéis qué tengo mal?  ???

Esa condición no funciona: Tienes un sprite con tres subimágenes para el ataque: 0, 1 y 2.
image_number - 1 = 3-1 = 2.
"Si 2 es mayor que 2, cambia el sprite"
pero dos nunca es mayor que dos, la condición nunca se hace verdadera.

Yo prefiero usar el evento ANIMATION END, pero si corriges la condición de ese IF, debería también funcionar.




1560
Mmm... estás usando muchos sprites, el doble de los necesarios.

Suponiendo que nada mas hay un sprite que originalmente mira hacia la derecha, el mismo se puede usar cuando se avanza a la izquierda, sólo inviertes su orientación usando image_xscale = -1. Esto mismo ayuda a que un sólo sprite de "quieto" sea suficiente, en lugar de un quieto_der y un quieto_izq

if image_speed > 0
{
     if image_index > image_number - 1 {sprite_index = spr_oficinista_stop_der};
}

Esto se supone que al final sirve para lo mismo que lo que puse para el evento [ANIMATION END]. Tu estás revisando qué sprite hay para condicionar qué sprite se muestra en seguida, yo voy más por el método de usar variables que me indiquen el estado del personaje, y en base a eso asignar sprites, pero de nuevo, es cuestión de gustos. ¿Para qué usas la alarma?