Junio 18, 2013, 07:05:58 am

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Mgbu

Páginas: [1] 2 3 ... 42
1
Si se puede, lo mas dificil es imaginarse cómo hacer para ver si hay tres fichas en linea. Una es probando con todas las posibilidades, otra no se, a lo mejor probar solo con las posibilidades en las que se involucra la ficha recien movida

2
Preguntas y respuestas / Re:Colores iguales
« en: Junio 11, 2013, 06:06:00 pm »
Que yo sepa los colores con alpha 0 no se suman porque justamente tienen alpha 0. Para mi que antes se multiplica la cantidad de color por al alpha, asi lo dice aquí (If it is assumed that all color values are premultiplied by their alpha values...) , algo asi:

  (0 0 0)* 1
+ (1 1 1)* 0.5
---------------
0.5 0.5 0.5 1 


Entonces todos los colores con 0 de alpha son iguales, porque todos son invisibles. No se puede sustraer un color realizando una resta con el color rojo?

  1 1 1 1
- 1 0 0 1
  --------
  0 1 1 1

3
Preguntas y respuestas / Re:Colores iguales
« en: Junio 10, 2013, 05:45:57 pm »
Nunca uso colores pero por lo que entiendo el primer color (1110) es blanco y el segundo (0000) negro. Pero si te fijas los dos colores son completamente transparentes, porque su cuarto valor es 0.

4
Preguntas y respuestas / Re:¿Cómo se evita el parpadeo del sprite?
« en: Junio 01, 2013, 12:53:27 am »
Es raro, con cuatro de velocidad no debería de verse así. Quizá te refieras al tearing, que se quita usando la sincronización vertical (global game settings - resolution - use synchronization to avoid tearing).

Revisa si es eso. A veces puede afectar el rendimiento de tu juego y normalmente los juegos tienen una opción para desactivarlo.

Lo gracioso es que me descargo juegos hechos con Game Maker (De otros usuarios) y no veo este 'problema'. Bueno...me queda mucho por aprender. Un saludo!
Entonces no deberia pasar, si queres podes pasarnos tu editable, o hacer otro ejemplo de juego con el problema, porque ni idea que será

5
Preguntas y respuestas / Re:"Pincel" ¿Como hacerlo?
« en: Mayo 30, 2013, 06:08:02 pm »
Parece que si, lo pude hacer correr hasta a 1000fps pero igual se dibuja mal ¿Còmo hacen los otros programas? ¿Usan lineas? A lo mejor hacen curvas suavizadas a partir de los puntos, no se

Perdón pero no entiendo a que te refieres con eso de que se dibujan mal, ¿podrías explicarlo?.
Me refiero a que se dibujan lineas de puntos, pero me sorprende de que a tantos fps siga pasando

Muchas gracias Silver_light y Mgbu,
una última pregunta: si ago lo de las línias, ¿Puedo cambiar las propiedades de la línia? Como hacer la línia mas ancha o ponerle unos sprites por encima, unas luces o effectos a la línia.
La forma de dibujar una surface es identica a la de dibujar la pantalla directamente, para hacer el ancho deberias usar draw_line_width, podes hacerla de distintos colores, y para ponerle sprites vas a tener que hacer un poco de matematica, no se, porque vas a tener que dibujar sprite por sprite

6
Preguntas y respuestas / Re:"Pincel" ¿Como hacerlo?
« en: Mayo 30, 2013, 12:56:30 am »
Creo que se haria con algo asi en el step:
Código: [Seleccionar]
xmouseanterior = xmouse
xmouse = mouse_x
Para que no de error en el create agregarìa
Código: [Seleccionar]
xmouseanterior = mouse_x
xmouse = mouse_x


E igual con la coordenada "y" del mouse. En el create habría que guardar la coordenada en una variable (xmouseanterior), en el proximo step la coordenada del step anterior (xmouseanterior) serìa la guardada previamente, y la nueva coordenada (xmouse) serìa la verdadera del mouse (mouse_x)


Como dice Mgbu, te hice un editable con surfaces, bastante sencillo, en el cual puedes ademas cambiar el tamaño de la broca y el color. Pero bueno, el único fallo es lo que dice Mgbu, si mueves muy rápido el cursor se dibujan los circulos muy separados. XD
Parece que si, lo pude hacer correr hasta a 1000fps pero igual se dibuja mal ¿Còmo hacen los otros programas? ¿Usan lineas? A lo mejor hacen curvas suavizadas a partir de los puntos, no se

7
Preguntas y respuestas / Re:"Pincel" ¿Como hacerlo?
« en: Mayo 29, 2013, 08:47:39 pm »
Me parece que la mejor forma es usar surfaces, son como lienzos en donde podes dibujar, son un poco dificiles de usar pero es la opcion mas apropiada, ya que si usas objetos vas a trabar el juego si dibujas mucho. Eso se haría dibujando circulos en la surface, a lo mejos si el mouse se mueve muy rapido vas a seguir viendo circulos en vez de lineas. Lo que se me ocurre es que dibujes lineas que vayan desde la posición del mouse hasta la posicion anterior del mouse, no se si se entiende

8
Preguntas y respuestas / Re:¿Cómo se evita el parpadeo del sprite?
« en: Mayo 29, 2013, 07:44:30 pm »
Para mi hablas de la baja cantidad de cuadros por segundo, tenes que subir la room_speed, pero tene en cuenta que vas a hacer mas calculos por segundo y en algunas PC va a bajar ese numero

PD: Y todavia hablan que el ojo humano detecta solo hasta 30 fps  :D

9
Preguntas y respuestas / Re:Torreta automatica.
« en: Mayo 28, 2013, 05:25:46 pm »
Acabo de volver, te traduzco lo que puse en el objeto

Lo que ves en el step es lo que se ejecuta 30 veces por segundo. Ahí dentro dice:
Código: [Seleccionar]
- Si la coordenada x del obj_jugador es mayor a la coordenada x mía (o sea esta a la derecha) y si la coordenada y menos la coordenada y del jugador en menor a 16 (o sea esta mas o menos a la misma altura), hacer lo que sigue:
       - Triangulo de comienzo del bloque, eso significa que si se cumple la condicion anterior se ejecute todo lo que esta dentro del bloque
       - Si la variable "recarga" es mayor a 0 (o sea el arma esta recargada) hacer lo siguiente:
             - Otro triangulo de comienzo de bloque
             - Crear un "obj_bala" en mi posicion moviendose a velocidad 10 en direccion 0 (o sea crear una bala en mi posicion moviendose hacia la derecha)
             - Setear alarma 0 a 30 steps (o sea hacer lo que esta en alarm0 dentro de un segundo)
             - Setear variable "recarga" a 0 (porque el arma se ha descargado)
             - Triangulo de fin de bloque
      - Triangulo de fin de bloque

Luego en el evento alarm0 lo unico que hacemos es cargar el arma, para que la torreta pueda volver a disparar
Espero que se entienda, o si no que otro me de una mano, no soy muy bueno para explicar :-[

10
Preguntas y respuestas / Re:Torreta automatica.
« en: Mayo 28, 2013, 04:13:19 pm »
Aca esta, ahora me tengo que ir, si necesitas explicaciones avisame, vas a ver que hice una variable "recarga" para que no dispare tan seguido

11
Para eso se usa el depth, se puede cambiar en las propiedades del objeto (pero no del sprite), mientras mas grande el numero más prioridad tiene, o para decirlo de otra forma mientras mas chico el numero más al fondo está ese objeto

12
Preguntas y respuestas / Re:Torreta automatica.
« en: Mayo 27, 2013, 06:01:46 pm »
La perdida de mensajes no afecta mucho, no te sientas mal :P

Te di una forma de hacerlo sin codigo
La otra es que arrastres una acción que creo que se llamaba "Test expression", y adentro escribas
Código: [Seleccionar]
xEnemigo > x and abs(y - yEnemigo) < 5Luego uno deberia arrastrar las acciones del disparo.
Pero como ves es una forma de hacerlo con codigo pero disimulado. Por ahora importa que entiendas lo que hace lo que dije aca arriba.
La acción "Test expression" es como lotras acciones de la pestaña control, como "If a position is collision free", "Test variable", etc. Si no las usaste nunca lo que hacen es chequear si su condicion es verdadera o falsa, "If a position is collision free" se fijará si tal posición esta libre por ejemplo, si es así la proxima acción se ejecutará, si en cambio esa posición está ocupada la proxima acción no se ejecutará.
En nuestro caso la acción "Test Expression" se fijará si el enemigo está a la derecha, si es así se ejecutará la siguiente accion (en tu caso disparar) de lo contrario no hará nada

Si no funciona acordate de cambiar las variables "xEnemigo" y "yEnemigo" del código que te pasé. Probablemente vos deberías poner ahi "obj_enemigo.x" o "obj_enemigo.y". Por si no sabes de que se trata "obj_enemigo.x" te cuento que eso sería traducible a "la variable x del objeto obj_enemigo"

Si te sigue sin salir te hago un ejemplo

13
Preguntas y respuestas / Re:Torreta automatica.
« en: Mayo 26, 2013, 08:31:40 pm »
Que raro yo contestando sin mirar :-[

Pudiste hacer la torreta?

14
Preguntas y respuestas / Re:Torreta automatica.
« en: Mayo 25, 2013, 05:47:31 pm »
Ah, bien. En código lo que está escrito luego de // es un comentario, o sea que no se ejecuta, era para indicar que ahí uno debe poner el codigo de disparar.

La otra es que arrastres una acción que creo que se llamaba "Test expression", y adentro escribas
Código: [Seleccionar]
xEnemigo > x and abs(y - yEnemigo) < 5Luego uno deberia arrastrar las acciones del disparo.

Como ves el codigo es lo mismo que D&D, por eso dar el salto no es muy dificil, por eso vale la pena.

Solamente te enseñe a chequear si el enemigo está al frente, para disparar es otra cosa, yo crearia un obj_bala y en el create del obj_bala uno le escribe su hspeed. Pero hay mas formas de hacerlo

15
Preguntas y respuestas / Re:Torreta automatica.
« en: Mayo 25, 2013, 03:07:35 pm »
No se me ocurre nada sin codigo, pero si con poquito

Me parece que lo mas facil es chequear dos condiciones basicas, el enemigo debe estar a la derecha y debe estar a la misma altura si no me equivoco
Entonces son dos condiciones, para ver si el enemigo esta a la derecha la variable x del enemigo tiene que ser mayor a la del objeto que dispara, y para chequear si estan a la misma altura uno puede ver si la variable y de los dos tienen el mismo valor. El problema con ver si la variable y es la misma para los dos es que la altura tiene que ser perfectamente igual, a lo mejor vos querés un margen de error de 5 pixeles para arriba y 5 para abajo, eso se hace sacando la diferencia de las dos variables y viendo si es menor a 5, encierro la diferencia en abs() porque quiero que el valor de esta sea simpre positiva (o si no cuando la y del enemig es mayor daria un numero negativo). Entonces queda así:
Código: [Seleccionar]
if (xEnemigo > x and abs(y - yEnemigo) < 5) {
    // Accion
}
Obviamente cambia la variable xEnemigo y yEnemigo por las que uses

Páginas: [1] 2 3 ... 42