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 - matiascarpello

242
Logre establecer la virtual key para que mi personaje sale con este código:

global.Space = virtual_key_add(0, 0, 960, 640, vk_space);

display_set_gui_size(960, 640);
virtual_key_show(global.Space);


Todo el código va en el evento create, ya que ahora en la última versión de gamemaker ya no funciona el método del draw_gui. Es por eso que ese código fue el único que funciono.

El problema es que me arroja un cuadrado blanco, y yo no quiero que se vea en la pantalla, es decir, que sea transparente, ya que mi juego no va a tener ningún botón, se puede tocar en cualquier parte de la pantalla y el personaje siempre saltara.
¿Como lo puedo volver transparente?
243
Cita de: LowHertzs en Marzo 25, 2014, 12:16:09 PM
if vspeed>0
{
sprite_index=SprFall
}


Hay un problema con ese código, porque se esta diciendo que si vspeed>0 se cambie de sprite, hasta ahí todo perfecto, pero en mi caso me falto aclarar que cuando el personaje coliciona con el piso, tiene que volver el sprite a la normalidad, pero se produce un bucle, porque el sprite se cambia a normal, pero a su vez el código le sigue diciendo a gamemaker que la velocidad estando en el suelo es menor que cero , y por eso tengo el error
244
Hola gente, quisiera saber como puedo hacer para que cuando mi personaje este cayendo cambie de sprite.

Pero no me refiero a cuando el personaje una vez que caiga cambie de sprite al colisionar con el piso, sino a cuando esta cayendo.

Supongo que habría que hacer algo relacionado al punto máximo de salto y la gravedad, y cuando se detecta que esta en caída cambia de sprite.

¿Alguna idea de como podría implementarlo?
245
Hola gente, tengo un problema, quiero que cada vez que inicie mi juego, un objeto tenga una posición aleatoria dentro de la room.

He probado este código que funciona pero solo cuando se reinicia la room, entonces ahí si cambia aleatoriamente de posición, pero al abrir el juego y cargar la room por primera vez siempre sigue en el mismo lugar. Y la verdad en el estilo de juego queda muy feo.
x = irandom_range(-100, 700);

246
Cita de: penumbra en Marzo 20, 2014, 01:41:14 AM
Una manera algo enredosa:

Creas una variable para contar los pasos, puede ser en el objeto del jugador o en un controlador
globalvar pasos = 0

en el evento [room end]
pasos = 0

EN el evento [step] le sumas uno a la variable pasos, siempre y cuando el juego esté activo (no pausado)
if (pausa == 0)
pasos += 1

if (pasos mod room_speed == 0)
++highscore             //Sumar 1 al marcador cuando pasos sea múltiplo de room_speed


Otra manera, si prefieres usar alarmas:

evento create del jugador o del controlador
alarm[0] = room_speed

evento [alarm0]
++highscore
alarm[0] = room_speed                   //Esperar otro segundo para sumar 1 a highscore


Ninguno de los métodos me a funcionado
247
Hola, yo de nuevo, ¿Cómo puedo establecer que cada segundo que llevo en mi juego me sume al Higscore +1?

Es decir, supongamos que inicio el juego y llevo jugando 20 segundos, entonces tiene que haber un Higscore de 20 ptos
248
Muchas gracias a todos, ya lo resolví
249
Cita de: Mega G en Marzo 19, 2014, 09:35:19 PM
Pues si sumar 0.5 cada vez te parece muy rápido suma menos cantidad.

¿Quieres ajustarla en función del tiempo?
De acuerdo, vamos a hacer matemáticas XD

Como tu velocidad crece de forma lineal tiene la ecuación de una recta:

Y=AX+B

En este caso:

V(T)=AT+V0

V(T) = Velocidad en un tiempo T  (unidad: píxeles/step)
A = incremento que queremos encontrar (unidad: píxeles/(steps^2))
T = tiempo (unidad: steps)
V0 = velocidad inicial = 3 en este caso (unidad: píxeles/step)

En nuestro caso T = 3 minutos = 180 segundos = 5400 steps (siempre y cuando tu room_speed sea de 30 steps/segundo)
Así que V(T) = V(3 minutos) = 100 según me has dicho en el enunciado, que la velocidad final al cabo de 3 minutos sea 100.

Entonces como solo tenemos 1 incógnita resolvemos la ecuación:

100 = A*5400 + 3

Que equivale a: 97 = A*5400
Que equivale a: A=(97/5400)  Introduce este valor tal cual en el Game Maker. Así será lo más preciso posible.

Tienes que sumarle 97/5400 a speed en el evento <Step>.


Espero que te sirva.
Y sobretodo espero no haber hecho ningún error calculando  :-[


Un saludo!

Muchísimas gracias! Por ahí jodo mucho porque no se mucho de programación, pero si de diseño, ya que soy licenciado en diseño gráfico.
Cuando necesites una mano con la parte gráfica cuenta conmigo.
250
Cita de: penumbra en Marzo 19, 2014, 08:57:01 PM
En su evento create de ese objeto usas alguna función random,

randomize();
x = irandom_range(pos_x_minima, pos_x_maxima);


si no usas randomize, puede que al probar el juego el objeto se crea siempre en el mismo lugar

Que raro, puse el código en el evento create y me tira el siguiente error


___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object obj_enemy:

Push :: Execution Error - Variable Get -1.pos_x_200(100000, -1)
at gml_Object_obj_enemy_Create_0 (line 2) - x = irandom_range(pos_x_10, pos_x_200);
############################################################################################
251
Cita de: Mega G en Marzo 19, 2014, 08:37:12 PM
No sé qué código usas para mover al objeto pero si usas speed, vspeed o hspeed pon esto en el <Step>:

if speed<100 { speed+=0.5; }
(Cambia speed por vspeed o hspeed según lo que sea).

Si mueves al objeto usando el D&D de las flechitas rojas puedes pasarlo a código así para que funcione:

action_move("000001000",velocidad)
Esto en el <Step> y entonces en el <Create> declaras la variable velocidad, que tenga como valor 3.
Y en el <Step> también añades el código que he puesto antes pero en vez de con speed, con velocidad.

Ahora te digo qué son esos 00000 que he puesto.
Si te mueves a la derecha ese string es "000001000" (el que he puesto).
Si vas a la izquierda es: "000100000".
Si vas arriba: "000000010"
Si vas abajo: "010000000"
Los demás son las diagonales, y el del centro es el stop.

Espero que te sirva.
Un saludo!

Me funcionó este código en el steep
if speed<100 { speed+=0.5; }

Pero ahora surgió algo del cuál no me había percatado. Veraz, con el código que me pasaste acelera de 0.5 a 100. Lo cuál esta perfecto, pero lo hace muy rápido al lapso de 0.5 a 100. ¿Si yo quiero que se demore por ejemplo 3 min en llegar a la velocidad de 100 como lo hago?
252
Hola gente, quiero saber como implementar que cada vez que inicio el juego, un objeto tenga una posición aleatoria en cuanto al eje X, pero no al eje Y. Es decir, yo defino la posición del eje Y, pero en cuanto al eje X tiene que ser aleatoria.
253
Hola gente, tengo un pequeño problema, pero no es tan complicado.

Tengo un objeto que es un enemigo, y se mueve a una velocidad de 3. Yo quiero que ese objeto valla aumentando la velocidad de a poco hasta llegar a un límite, supongamos que 100. Por lo que de a poco tiene que comenzar con una velocidad de 3 hasta alanzar una velocidad de 100, y de ahí en mas seguir manteniendo la velocidad de 100.

¿Como puedo implementarlo?
254
Hola gente, tengo un pequeño problema.

Estoy creando un juego de plataformas, pero quiero que cuando el personaje colicione con el suelo, este valla cambiando de sprite, para que de la sensación de que va dejando un rastro de sangre al caminar manchando el suelo.

Pero el problema es que al colicionar con una bloque del piso me cambia el sprite a todo el piso, lo cuál es logico porque yo estableci un change sprite al colicionar con el objeto piso, pero no pense que tambien afectaba a todos los demas objetos piso del escenario.

Entonces, ¿como puede hacer para que se valla cambiando el sprite del objeto piso a medida que mi personaje va colicionando con cada uno?
255
Cita de: DarkKRuleR en Marzo 10, 2014, 10:46:22 PM
Pues así de entrada un sprite de la sangre. Cuando el PJ toque el suelo lo creas, probando números hasta que encaje perfectamente, igual para las paredes. Ahí sería cuestión de currártelo más, como hacerlo animado, y que tras 1 segundo se quede ya la sangre quieta pegada. En este caso sería sólo cuando el PJ toca un suelo/pared, una vez por toque, no creando infinitas sangres, esto depende de cómo tengas programadas tus físicas

Hola, gracias, me a funcionado en parte. Hice que cuando el personaje colisione con el suelo se cambie el sprite del suelo con la sangre, pero la colición solo se da cuando salto y al caer toca el suelo. Ahí si se cambia el sprite. Pero el problema es que cuando camino por el suelo no se cambia el sprite, por lo que significa que el solo hecho de caminar por el piso no produce coalicion. Por lo tanto, solo funciona cuando doy un salto y al caer por la brevedad toca el suelo. ¿Qué puede ser?