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 - _-Caleb-_

46
Cita de: learsi en Abril 27, 2014, 01:36:09 PM
Cita de: _-Caleb-_ en Abril 27, 2014, 11:31:16 AM
Cita de: learsi en Abril 27, 2014, 10:22:28 AM
Hola, soy un poco novato, pero se me ocurre que le podrías añadir al evento de colisión un:

If hspeed>0

No recuerdo si es > o <

De esa forma comprobarías si el personaje está cayendo.

hspeed es la velocidad horizontal, en todo caso sería if vspeed > 0 al player, pero es más sencillo lo que pongo, creo :)

Ups, cierto, se me coló XD

Lo cierto es que así también podría funcionar si hace una comprobación de colisión con los pinchos, porque esto también se comprobaría durante los saltos, por ejemplo, por eso creo la manera más sencilla y cómoda de hacer es lo que dije, sin tocar el GML para nada, de momento (Porque al final tendrá que tocarlo si o si  XD)
47
Cita de: learsi en Abril 27, 2014, 10:22:28 AM
Hola, soy un poco novato, pero se me ocurre que le podrías añadir al evento de colisión un:

If hspeed>0

No recuerdo si es > o <

De esa forma comprobarías si el personaje está cayendo.

hspeed es la velocidad horizontal, en todo caso sería if vspeed > 0 al player, pero es más sencillo lo que pongo, creo :)
48
Hola, es sencillo.

Lo que puedes hacer, es muy sencillo, es coger tu bloque normal (un objeto, supongo) y crear otro objeto con los pinchos, luego en el room ya lo ajustas, ese es el método más fácil :)

Te he puesto una captura más o menos explicando lo que te quiero decir.

¡Saludos!
49
Buenas, veo que el subforo de preguntas y respuestas está lleno de cosas repetidas, con lo que se podría crear un subforo con algunos temas solucionados, por ejemplo:

Puntuaciones, cómo crear un archivo INI y trabajar con el (Cosa que ya hizo ocarina en su día) y cuando alguien entre y pregunte, que se le envíe a ese hilo y se cierre el que ha abierto, ¿No es más fácil poder tener así la sección medio ordenada sin tener uno o dos temas que pregunte por las puntuaciones en cada página?

Luego a esos hilos se le pueden asignar una serie de "situaciones hipotéticas" donde ser utilizadas.

Por ejemplo, volviendo al tema de los ini, valen tanto para la puntuación, como para las opciones, como para una localización del juego en otros idiomas, para el dinero del player, para el número de vidas, para el número de enemigos por nivel, para el número de enemigos derrotados, para guardar o cargar la partida, para establecer una cuenta atrás o un tiempo límite, etc.

Se pueden añadir estos "tags" en el hilo y así saldrían rápidamente en el buscador.

¿Qué opina el staff sobre esto? Creo que no es mala idea :)

Yo, dentro de mis limitaciones de conocimiento sobre GML, podría escribir algo y me ofrezco como voluntario para añadir algunas cosillas básicas. :)

¡Saludos!
50
Cita de: juanbustos en Abril 25, 2014, 05:41:08 AM
Cita de: eams1986 en Abril 25, 2014, 05:21:54 AM
|Game Maker| Variables globales para cada objeto: http://youtu.be/yHGioZrGHbE

vos me estas jodiendo??? eso no explica nada, es el primer video que encontraste con "global" y me lo mandaste  :(

Madre mía, pues yo he visto el vídeo y explica qué es una variable global y cómo y por qué se usan, pero supongo que es más fácil venir y que te lo den todo mascadito :)

Vamos, a mi no me jodas, la info de yoyogames con el google translator SE ENTIENDE PERFECTAMENTE

CitarUna descripción básica de una variable global es aquella que, una vez declarada, pertenece a ningún caso en particular, y sin embargo, se puede acceder por todos. Al igual que las variables locales, variables globales deben ser declaradas, pero a diferencia de una variable local, una variable global se mantiene en la memoria hasta el final del juego. Así, puede crear una variable global a no perder de vista (por ejemplo) el número de balas que el jugador tiene y luego simplemente actualizar esta variable en diferentes puntos en el juego. Una variable global no pertenece a ninguna instancia específica y se puede acceder, cambiar y utilizado por todas las instancias en cualquier momento, pero cualquier cambio realizado en la variable son "global", en la que todas las instancias utilizando la variable se verán afectados por el cambio . Vamos a echar un vistazo a un ejemplo:

Súbenos tu proyecto tio, que ya lo terminamos nosotros, luego te lo damos, lo vendes y ganas dinerito con nuestro código  XD a mi me parece el plan perfecto.

No digo todo esto por el nivel al que "contolas" gamemaker, que todos hemos empezado, sino por la "educación" de tus mensajes.

http://www.youtube.com/watch?v=AcQn5Irya88

Y si vienes aquí: http://www.comunidadgm.org/search2/ y buscas variables globales tendrás 132 resultados :( Pero es más fácil preguntar, haciendo esto se llena el foro de temas REPETIDOS, seguro que 2 o 3 páginas atrás hay algún mensaje de hace algunas semanas cuya respuesta te puede servir :)
51
Preguntas y respuestas / Re:Impulsar una nave
Abril 22, 2014, 07:06:29 PM
Mira, el teaser de mi juego, a partir del segundo 45, es eso lo que buscas?

https://www.youtube.com/watch?v=HLSjj8mqcL4
52
Preguntas y respuestas / Re:Impulsar una nave
Abril 22, 2014, 06:32:57 AM
usa el sistema de físicas de gm y gravedad, no tiene más
53
Preguntas y respuestas / Re:Ayuda con los sonidos
Abril 20, 2014, 03:55:23 PM
Hola.

Mira esto para reproducir un sonido
http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/sounds/audio_play_sound.html

Y esto para detenerlos todos
http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/sounds/audio_stop_all.html

También lo puedes mirar en los eventos drag&drop en la pestaña Main1

¡Saludos!
54
Cita de: penumbra en Abril 20, 2014, 11:25:26 AM
Cita de: _-Caleb-_ en Abril 20, 2014, 11:15:33 AM
En realidad son 8 imágenes animadas, perdón por no decirlo :) Pero probaré algo así a ver si va, gracias penumbra :)

El código de las distancias y el ángulo sería el mismo, sólo cambiaría el método para elegir el sprite animado. Lo más directo, aunque más laborioso de escribir es el de usar ifs, como en tu mensaje original. En lugar de usar image_index usas otra variable para guardar la dirección dentro del IF. En lugar de ifs se puede usar un switch. También se pueden guardar previamente los 8 sprites animados en un ds_map y bastaría una sola instrucción para elegir el sprite correcto según la dirección.

Juas gracias, luego lo meto que estaba añadiendo otras cosillas antes :)

La verdad es que a veces leo el reference y me pongo a probar cosas sin ningún sentido, luego se me queda esta cara si no funciona:

¡Saludos!
55
Cita de: penumbra en Abril 20, 2014, 11:06:07 AM
Cita de: _-Caleb-_ en Abril 20, 2014, 08:58:44 AM
Si, pero todos sabemos cómo destroza gamemaker los sprites si los rotamos, por eso tengo 8 sprites con las 4 direcciones + diagonales :)

No necesitas usar image_angle para rotar el sprite. Yo pensé que eran 8 sprites distintos, todos animados, pero si lo único que quieres es elegir entre 8 imágenes estáticas (eso es lo que entiendo), todas se pueden incluír en un solo sprite en lugar de tener 8 sprites. Primero, preparar las subimagenes en el orden correcto


Tu profesor de álgebra debe estar contento, pero estás eligiendo el camino más complicado.  :D  gm ya incluye funciones que te hacen la vida más fácil
[CREATE]
angulo = 0;
margen = 30;                    //Distancia umbral para que el objeto reaccione al ratón
image_speed = 0;


[STEP]
xx = abs(mouse_x - obj_player.x)
yy = abs(mouse_y - obj_player.y)
angulo = point_direction(x,y,mouse_x,mouse_y)      //Dirección del mouse respecto al jugador

if (xx <= ((sprite_width/2)+margen)  ) and (yy <= ((sprite_height/2)+margen)  )
{
    image_index = angulo * (image_number/360)
}


Como ves, no fue necesario calcular la resultante del vector, símplemente se revisa que la distancia horizontal (puntero-jugador) y la distancia vertical (puntero-jugador) sean menores a alguna distancia que funcione (el origen del sprite del jugador debe estar centrado). Usé X y Y en la comparación porque el sprite no es un cuadrado perfecto, es más alto que ancho, pero si el sprite del jugador tiene sus lados iguales, sólo necesitas comparar una sola distancia. Resultado.




En realidad son 8 imágenes animadas, perdón por no decirlo :) Pero probaré algo así a ver si va, gracias penumbra :)

EDITO: Funciona de lujo con imágenes estáticas pero como te digo yo tengo una animación de movimiento por cada uno de los ejes.

Igualmente éste código lo ha hecho un amigo con el que colaboro en mi proyecto, el profesor de álgebra contento es el suyo :P

Aunque si, a mi me gusta complicarme, más por ignorancia que por gusto xD

56
Cita de: ocarina en Abril 19, 2014, 05:45:47 PM
Amigo no seria mas fácil q le pongas image_angle=angulo del mouse?

Si, pero todos sabemos cómo destroza gamemaker los sprites si los rotamos, por eso tengo 8 sprites con las 4 direcciones + diagonales :)

EDITO: Si con consigo arreglar esto en un par de días pues al final lo haré sin el ratón, sólo con el teclado, que es más fácil de implementar, pero me quedaré con la duda sobre qué coño estaba haciendo mal xD
57
Buenas, la verdad es que desde ayer me estoy peleando con esto y ya no sé que he hecho mal.

Todo esto en el step del personaje, en el create está radio declarada.

distancia_x = mouse_x - N4_Player.x;
distancia_y = mouse_y - N4_Player.y;
distancia = sqrt ( distancia_x*distancia_x  + distancia_y*distancia_y );

if (radio < distancia)
    {
anguloDelRatonRespectoAlPlayer = arctan2(distancia_y,distancia_x);
anguloDelRatonRespectoAlPlayer = radtodeg(anguloDelRatonRespectoAlPlayer);

if (anguloDelRatonRespectoAlPlayer > 22.5)&&(anguloDelRatonRespectoAlPlayer<=67.5) sprite_index = N4_diagonal_abajo_izq; //bueno
if (anguloDelRatonRespectoAlPlayer > 67.5)&&(anguloDelRatonRespectoAlPlayer<=112.5) sprite_index = N4_Jugador_Abajo; // bueno
if (anguloDelRatonRespectoAlPlayer > 112.5)&&(anguloDelRatonRespectoAlPlayer<=157.5) sprite_index = N4_diagonal_abajo_der; // bueno
if (anguloDelRatonRespectoAlPlayer > 157.5)&&(anguloDelRatonRespectoAlPlayer<=202.5) sprite_index = N4_Jugador_Izq; //Bueno
if (anguloDelRatonRespectoAlPlayer > 202.5)&&(anguloDelRatonRespectoAlPlayer<=247.5) sprite_index =  N4_diagonal_arriba_der;
if (anguloDelRatonRespectoAlPlayer > 247.5)&&(anguloDelRatonRespectoAlPlayer<=292.5) sprite_index =  N4_Jugador_Arriba;
if (anguloDelRatonRespectoAlPlayer > 292.5)&&(anguloDelRatonRespectoAlPlayer<=337.5) sprite_index = N4_diagonal_arriba_izq;
if (anguloDelRatonRespectoAlPlayer < 22.4)||(anguloDelRatonRespectoAlPlayer>=337.5) sprite_index = N4_Jugador;
    }


Funciona bien si el ratón está por debajo del player, pero por encima ya no funciona... ¿Qué estoy haciendo mal?

¡Saludos!
58
He actualizado las demos con una room al principio, con sus botones para visitar los perfiles de IndieDB y Desura o iniciar la Demo y arregladas algunas cosillas en los 2 primeros niveles y en el Jukebox.

De hecho el menú lo quería cambiar, en la primera versión le tenías que disparar a los botones con la nave, pero recibí muchos comentarios de que lo cambiase y pusiera un menú clásico, con ratón, y así lo hice. (Ahora me haces dudar XD)

@abramelin gracias por el feedback, el "truco" del primer nivel es el siguiente: No avances salvo lo necesario con la nave, quedándote atrás casi todo el tiempo llegarás más lejos, también puedes comprar píldoras de salud cuando tengas 50 puntos o más pulsando la tecla ctrl.

¡Saludos!
59
Preguntas y respuestas / Re:Puntuación mas alta
Abril 10, 2014, 06:08:10 AM
Veo que está en un evento Step... puedes probar a ponerlo en el create ya que el step se ejecuta siempre. O crear un objeto para cuando maten al player y que se cree (Por ejemplo el que tengas de aviso de "game over" o similar)

Otra cosa:

if global.score >= highscore_value(5){
    global.nombre = get_string("Nuevo Record!!","");
    while string_length(global.nombre) > 8
        global.nombre = get_string ("Nombre Demasiado largo",global.nombre);
    if global.nombre == ""
        global.nombre = "Player";
    highscore_add(global.nombre,global.score);
}


Este código está bien?  Yo sólo veo un }mira en el editor si no te informa de ningún fallo...


if(global.score >= highscore_value(5))
{
    global.nombre = get_string("Nuevo Record!!","");
    while string_length(global.nombre) > 8;
    global.nombre = get_string ("Nombre Demasiado largo",global.nombre);
    if(global.nombre == "")
    {
    global.nombre = "Player";
    highscore_add(global.nombre,global.score);
    }
}


Prueba a crear las variables globales en el create del objeto o algo así.

con

globalvar nombre;


y luego úsalas sin poner el global. ya que no es necesario :)
60
Preguntas y respuestas / Re:Puntuación mas alta
Abril 09, 2014, 08:55:50 PM
Por qué usáis global.score  en vez de, símplemente score, no es más fácil para tenerlo todo bien ordenadito? Imagino que es cuestión de gustos