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

31
Preguntas y respuestas / Re:editar un .txt
Diciembre 21, 2013, 06:20:46 PM
En realidad no es que al abrir un txt se va a mostrar en la pantalla el archivo, se puede hacer, pero lo más común es leer y editar txt sin que el jugador se entere. Por ejemplo se puede escribir en un txt el nuevo puntaje del jugador sinq ue éste se de cuenta

Para usar las funciones de edición de archivos vas a tener que usar GML, en el manual estan explicadas las funciones

Fijate que a lo mejor los archivos INI se adecuan mejor a lo que necesitas, ya que son más fáciles de usar. Un archivo INI es como un txt que está escrito de esta forma:
[Puntajes]
Martin=10020
Pedro=23874
Juan=42424
[Desbloqueos]
Ametralladora=0
Pistola=1
NivelSecreto=1


Como ves para guardar variables es más fácil de usar que un txt
32
A eso lo podes hace en dos partes. Primero, que caiga, hay muhjas formas de hacer que caiga, la más fácil es usar gravedad. En el create podés usar "gravity_direction=270" para hacer que el objeto caiga a 270 grados, que sería hacia abajo y "gravity=0.5" para poner la gravedad a 0,5. Podés probar otros valores para la gravedad, mientras menos, más lento cae
Y para hacer que gire en el evento step escribís "image_angle += 5", eso va a hacer que en cada step se sume 5 al ángulo de rotación del objeto, acá también podes probar con otros valores
33
Como están los orígenes está perfecto, yo te dije eso por las dudas. Yo te di un caso extremo en donde un punto de origen está bien arriba y el otro bien abajo. Pero si están al medio no hay problema

Por querer explicarlo bien a lo mejor te compliqué, lo único que tenés que hacer es encerrar lo que está en el evento colisión con Mario en una condición. La condición se hace con "Test Expression" y lo que tenés que escribirle es "obj_mario_n.y > y". Todo lo otro es explicación sobre qué significa eso
Cualquier duda pregunta, si logras entender lo que pusimos en el "Test Expression" ya sabés el 30% de lo que es escribir en código!

Saludos
34
No te preocupes, no me molesta responder
Contesto por acá y pego tu pregunta para que quede disponible a los otros que tengan el mismo problema

Cita de: Betox en Diciembre 19, 2013, 09:52:46 PM
Cuando Mario salta encima del ladrillo el reloj se activa y el ladrillo se vuelve otro bloque; entonces probe si pasaba lo mismo si ponia un ladrillo y colisionar con él de costado , por suerte en esto no hay drama, la alarma no se activa . otra cosa que note, es que, si pongo supongamos tres ladrillos seguidos y Mario salta encima de uno (este ladrillo se activa) y sigo caminando los demas ladrillos no se activan.  En conclusion el problema es cuando mario cae encima del ladrillo y este se activa. Trate de desactivar la alarma del ladrillo para que cuando Mario al hacer contacto pór encima, pero no da pelota,se activa igual.
Te paso el grafico para que veas que es lo que hice.. y disculpa q te siga molestando por este tema. Gracias y saludos.



Es normal que pase que las colisiones sólo ocurran desde algunos lados. Creo que colisiona a veces por esto: las direcciones en las que colisiona con el ladrillo depende de la forma que muevas el presonaje. Por ejemplo si vos el el código de mover a Mario hacia el costado antes de mover te fijás si va a colisionar con el ladrillo y te movés sólo si está el espacio libre Mario nunca va a colisionar con el ladrillo porque si Mario fuera a colisionar no se hubiera movido. No se si se entiende
Lo mismo pasa con eso de que a veces colisiona con el ladrillo de arriba, creo que pasa porque normalmente en los juegos de plataformas al caer sobre un bloque (hay colision) ponemos la gravedad a 0, haciendo que Mario "levite" bien bajito sobre los ladrillos, entonces no hay colisión sobre los otros ladrillos
Igual creo que es por eso

Yo lo arreglaría haciendo que Mario saque monedas sólo si está colisionando desde abajo, total hacia el costado no hay problema. Para saberlo se pueden comparar la altitud en la que está Mario y la altitud en la que está el ladrillo. Acordate que la altitud se mide en la coordenada Y
No es difícil de arreglar, simplemente hay que fijarse si la coordenada Y de Mario es mayor que la del ladrillo (acordate que Y aumenta de arriba a abajo), eso se hace con un "Test Expression". Con "Test Expression" podés hacer una condición de cualquier tipo, podés preguntar cualquier cosa.
Nosotros vamos a preguntar si Mario está abajo mío (con mío me refiero al bloque). A eso hay que traducirlo a preguntar si la Y de mario es mayor que mi Y, que se escribe "obj_mario_n.y > y"
"obj_mario_n.y" significa "La Y de mario", el símbolo ">" significa "mayor" y "y" significa nuestra Y
Escribir así en código te puede parecer difícil, eso es porque "Test Expression" necesita que le escriban en GML
Con eso ya hiciste la condición, ahora tenés que ponerle "Start of block" y "End of block" para encerrar a todo lo que hay en el evento colisión y hacer que ocurra sólo cuando Mario está abajo

El problema que puede ocurrir es que la coordenada Y está medida en el punto de origen del sprite. Por ejemplo si el origen del sprite de Mario es en los pies, cuando vos te fijes cual es la posición Y de Mario lo que vas a saber es la posición de los pies, y si el punto de origen del bloque es bien arriba y Mario "entierra" un poquito el pie desde arriba el juego creerá que mario está debajo del bloque, porque se está fijando sólo en los pies. Podes ver un ejemplo en la imagen adjunta, en donde la compu va a creeer que mario está debajo del bloque cuando en realidad está encima
No se si vas a tener ese problema, ya que depende del código de movimiento que uses, puede ser que ocurra (las cruces verdes son los puntos de origen). Si ocurre se puede arregar fijandosé que mario esté muy por debajo agregando una cosita al código del "Test Expression"
35
Al rotarlo no tiene por qué moverse, a lo mejor el jugador rota a partir de un punto que no es el centro
Al editar el sprite del objeto poné "Center" en la parte de "Origin" así el jugador rota alrededor de ese punto, que ahora es el centro
36
Que bueno que te haya servido, acordate de subir el juego después :D
37
Lo que podés hacer es activar la alarma sólo cuando el ladrillo ha sido golpeado por primera vez
Lo de dar monedas está todo bien, pero ahora que veo el tema de las alarmas está un poco mal

Porque lo que estás haciendo es que en el Create estás poniendo la alarma a 0. Entonces el evento Alarm se activa inmediatamente, porque hiciste que se active en 0 steps, que es inmediatamente
Bueno, entonces apenas se crea el objeto se activa la alarma por lo que expliqué antes. La alarma lo que hace es activarse a si misma dentro de 90 steps y convertir el bloque en un obj_acero_azul. Como la alarma se ejecuta instanteaneamente es lo mismo que si hubieramos puesto lo que está en el evento Alarm 0 en el Create
Un problema es que si no me equivoco estás convirtiendo el bloque en un obj_acero_azul instantáneamente, incluso antes de ser golpeado por Mario, ya que el evento alarm se ejecuta apenas se crea el objeto
Y lo que vos decís de que se reactivan los segundos ocurre porque estás poniendo la alarma a 90 steps cada vez de que es golpeado por Mario

Entonces creo que la mejor forma de hacerlo es que borres el "Set Alarm" del evento Create y del evento Alarm, y sólo poner "Set Alarm" cuando el ladrillo es golpeado por primera vez
Para hacer eso ponemos una condición como hicimos antes, en vez de fijarnos si monedas_ganadas es mayor a 20 vamos a fijarnos si monedas_ganadas es igual a 0, ya que eso indica que es la primera vez que golpeamos el ladrillo. Si se cumple la condición ponemos un "Set Alarm" al tiempo que queramos

Te adjunto la foto de como quedaría
38
Eso se hace con variables. Cada objeto puede "acordarse" de un número gracias a las variables.
En lo que pedís vos podés hacer que el objeto se acuerde de la cantidad de monedas que dió, y si se da cuenta que ya dió 10 monedas se convierte en un bloque de acero

Entonces en el Create ponés un "Set variable", ahí tenes que poner el nombre de la variable (por ejemplo monedas_dadas) y ponés el valor inicial de monedas, en tu caso 0
Después cuando uno da una moneda tenemos que sumar 1 al numero de monedas_dadas. Eso se hace poniendo un "Set Variable" después de crear la moneda, escribís monedas_dads de nuevo y en el valor ponés monedas_dadas + 1
Por último hay que fijarse si ya dió 10 monedas, entonces después de actualizar el número de monedas_dadas hay que pone una condición. Las condiciones se hacen con "Test Variable". En ese "Test Variable" vamos a fijarnos si el valor de monedas_dadas es mayor a 10, entonces en variable ponemos monedas_dadas, en value ponemos 9 y en operation "larger than"
Inmediatamente después de el "Test variable" hay que poner la acción a realizar si se cumple la condición que acabamos de crear, en nuestro caso si se cumple la condición hay que hacer "Change instance into obj_acero_azul"

Resumiendo:
Ponemos un "Set Variable" en Create
Luego de lo que hay en el evento colisión con mario agregamos un "Set variable", un "Test variable" y un "Change instance" en ese orden
39
No, sólo se ejecutan los eventos de los objetos colocados en la room actual
Además podés poner objetos "Persistent" que una vez que son creados (al entrar en una room en donde están colocados) no se destruyen al cambiar de room

Por ejemplo pongo un obj_musica en la room 2:
En la room 1 no hay música
Paso a la room 2, se crea el objeto y comienza a sonar la música
Paso a la room 3 y la música sigue sonando como si nada hubiera pasado
Paso a la room 4 y la música sigue sonando como si nada hubiera pasado
Etc
40
Cita de: jmbs19 en Diciembre 15, 2013, 12:29:29 AM
ok, muchas gracias, me sirvio perfectamente, y me acabas de dar una nueva visión, las vistas también son objetos, por ende se pueden hacer muchas otras cosas con ellas, muchas gracias.

una cosa ultima cosa, ¿habrá una manera de "suavizar" esa vista?
Creo que con "Interpolate colors between pixels" en las opciones dle juego, no se si hay otra forma
41
El problema sería algo así como esto

Para solucionar el problema el HUD tiene que estar dibujado a partir del evento Draw (Uno debe poner el código en draw, si el fondo del HUD es el sprite de un objeto por ejemplo no funcionará) ya que en el dibujado uno tiene que agregar una condición:
if view_current=? {
//Tu código
}


En vez del signo de pregunta tenés que poner el número de la view en la que querés dibujar
42
Cita de: darius en Diciembre 01, 2013, 10:27:23 PM
por cierto, para lo que pides al final, si quieres que el sprite coja una subimagen aleatoria, pones esto en el create event: image_single=irandom(image_number-1)
A modo de explicación, image_single es el número de subimagen que vamos a mostrar
Entonces queremos que la subimagen utilizada sea igual a irandom(image_number-1), que sería un número aleatorio entre 0 y el número de subimágenes que el sprite tenga. Le restamos 1 al número de subimágenes porque cuenta a la subimagen 0.
Entonces si tenemos al subimagen 0, 1, y 2, image_number devolverá 3. restamos 1 y queda 2. Entonces elegimos un número aleatorio entre 0 y 2

PD: No conocía a la variable image_single. Busqué en Google y image_single es lo mismo que image_index pero que además pone a image_speed a 0 para que no se cambie la imagen a través del tiempo. Pero también leí que es una variable que está en desuso (deprecated)
43
Cita de: eams1986 en Noviembre 30, 2013, 03:12:47 AM
Es un gusano lo mejor es formatear.
Gusano? Me interesaría saber por qué alguien hizo un gusano para Game Maker cuando no es tan popular, ¿O Game Maker carga lento debido a un gusano que afecta DirectX o algo usado por GM?
Porque si es un gusano a lo mejor se podría sacar con un antivirus, o buscar alguna solución que no sea formatear
44
Lo único que te puedo decir es que me pasó y es que es horrible. Tenía una PC con Windows 7 y me tardaban 5 minutos en cargar, no importaba si eran pesados o no. Acá había abuerto un tema
Me parece que se arregló cuando formateé (segun Google formatear se conjuga así jaja (creo)) la PC. Yo diría que instales DirectX, drivers de placa y todo eso, pero me parece que había probado con eso. Así que si hace poco que instalaste Windows 8 te recomendaría instalarlo de nuevo o instalar el 7 (instalar Windows 7 me parece una lástima, ya que Windows 8 me va muy bien)
45
Preguntas y respuestas / Re:Crear juego estilo Temple Run
Noviembre 29, 2013, 09:57:01 PM
No debería ser tan dificil, lo único difícil es el tema del 3D. Pero si querés hacer uno en 2D (visto de arriba o desde el costado) no se te debería complicar mucho.
Bueno, en 3D tampoco, pero lo dificil del 3D es el tema de la cámara, los modelos, el hombre que corre...

Si lo haces en 2D mirando desde el costado es simplemente un juego de plataformas en donde el personaje se mueve constantemente y en donde lo único que se puede hacer es saltar o agacharse
Si a eso lo agregas el 3D se agrega la profundidad solamente, por eso el único problema son los modelos (los dibujos en 3D)

Pero si decis que estás empezando te recomendaría hacer un juego más simple para ir entendiendo como se maneja el programa, con un juego de tiros visto desde arriba por ejemplo