Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

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

Páginas: 1 2 3 ... 7
1
Preguntas y respuestas / Re:Error al entrar en una room
« en: Octubre 05, 2019, 03:58:11 pm »
Hola alvarito8788

Lo que veo es que el "obj_controller" intenta interactuar con el objeto "obj_pic" y el objeto "obj_pic" no existe en la room.

Saludos Cordiales
Los siguientes usuarios dieron las gracias a este tema: alvarito8788

2
Hola Fashion_Trozos

El problema es que se ejecutan ambos bloques de código al mismo tiempo, entonces creas y destruyes el inventario en el mismo step.
Te sugiero cambiar la estructura por un "if-else", de esta forma:
Código: [Seleccionar]
if keyboard_check_pressed(ord("I")) {
if instance_exists(ob_inventario) = false { instance_create_depth(room_width/2,room_height/2,-1,obj_inventario) }
else { with (obj_inventario) instance_destroy() }
}
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

3
Preguntas y respuestas / Re:Archivos ini
« en: Marzo 28, 2019, 11:44:42 pm »
Hola Star Platinum

Claro que el valor debe cambiar.
Después de usar algún ini_write, Game Maker modifica el archivo original según los parámetros que le has indicado.

Revisa que estás viendo el archivo en la ruta correcta.

Saludos
Los siguientes usuarios dieron las gracias a este tema: Star Platinum

4
Preguntas y respuestas / Re:Sacar el angulo entre dos puntos.
« en: Febrero 22, 2019, 03:01:54 pm »
Hola clsotelo

La función point_direction que estás usando te devuelve el angulo en "grados" entre dos puntos, en este caso estás usando como primer punto el "X" e "Y" del objeto que llama el código y como segundo punto el device_mouse_x(0) y device_mouse_y(0), que en android es la coordenada del primer dedo que entra en contacto con la pantalla..
El valor que te retorna es un ángulo en grados con un valor entre 0 y 359 (con decimales incluso).
Siendo: 0° = Derecha / 90° = Arriba / 180° = Izquierda / 270° = Abajo.

Saludos
Los siguientes usuarios dieron las gracias a este tema: clsotelo

5
Preguntas y respuestas / Re:Posición de Object sobre una View
« en: Febrero 19, 2019, 12:17:58 pm »
Hola clsotelo

Simplemente sustrae la coordenada de la cámara a la coordenada del objeto y así obtienes la posición del objeto relativa a la cámara

x objeto - x cámara = x relativo

Saludos
Los siguientes usuarios dieron las gracias a este tema: clsotelo

6
Hola Ikaro3d

Tal como dice Clamud, el efecto parallax te puede ayudar, donde los objetos más lejanos se mueven más lentos que los objetos más cercanos.

También podrías desenfocar el objeto para que dé la sensación de que está lejos o hacer que se vea más pálido que el resto de los objetos.
Por lo general en las fotografías de montañas, las más lejanas se ven más pálidas que las más cercanas, aunque se debe a la atmósfera, no sé si en el espacio aplique el mismo concepto xD

Saludos
Los siguientes usuarios dieron las gracias a este tema: Ikaro3d

7
Preguntas y respuestas / Re:Ejecutar UNA sola vez
« en: Noviembre 13, 2018, 12:28:06 pm »
En ese caso revisa que estés tocando el suelo antes de cambiar la vspeed con la función:
if place_meeting(x, y+1, obj_suelo)
Reemplaza "obj_suelo" por el objeto que uses de muro.

Saludos
Los siguientes usuarios dieron las gracias a este tema: dixon2010

8
Preguntas y respuestas / Re:Ejecutar UNA sola vez
« en: Noviembre 12, 2018, 12:11:30 pm »
Hola Binario YT

Asumo que ese código está en step, en ese caso, usa la función "keyboard_check_pressed" en vez de "keyboard_check", así sólo detectas la primera pulsación de la tecla
Ej:
Código: [Seleccionar]
if keyboard_check_pressed(vk_space)
&& place_meeting(x,y+1,obj_suelo) {
Ejecuta el salto acá
}

Saludos
Los siguientes usuarios dieron las gracias a este tema: dixon2010

9
Preguntas y respuestas / Re:Problema con la vspeed
« en: Noviembre 11, 2018, 02:20:34 am »
Hola PaulleXd

El problema es que los objetos "hijos" (por así decirlo) están copiando la velocidad de dos objetos diferentes, cuidado con los nombres.
"RI3_2" y "RIC3_2", usa uno único, ejemplo "RIC3_2".
Lo otro que puede causar el error, es que tengas más de un "RIC3_2" en la room, entonces le cambias la velocidad a uno, pero los "hijos" están copiando la velocidad de otro con una velocidad diferente.

Como solución se me ocurre que:
En Step pongas:
Código: [Seleccionar]
RI1_2.vspeed = RIC3_2.vspeed
RI2_2.vspeed = RIC3_2.vspeed
RC2.vspeed = RIC3_2.vspeed

Y en la colisión cambiar la vspeed de TODOS los RIC3_2 (por si hay más de 1 en la room):
Código: [Seleccionar]
with (RIC3_2) { vspeed = 0; }
Entonces en el próximo step, todos los objetos indicados en el step, copiarán la velocidad cero.

Tu solución de hacer un Objeto Padre también sirve.
Puedes crear un objeto nuevo llamado "control_velocidad" (o como sea) y que sea padre de todos los demás, así usas "control_velocidad.vspeed = 0" y todos los hijos tomarán velocidad cero.
Según yo, el código del hijo sobre-escribe el del padre, así que no debería afectar en el draw event.
Simplemente anda a cada objeto que quieres que sea "hijo" y en la casilla "Parent", le pones "control_velocidad" (o como le hayas puesto al objeto)

Saludos
Los siguientes usuarios dieron las gracias a este tema: PaulleXd

10
Preguntas y respuestas / Re:¿Cómo utilizo collision_line?
« en: Noviembre 11, 2018, 02:02:11 am »
Hola lucasflexx

La función "collision_line" permite trazar una línea recta entre dos puntos y ver si algún objeto toca la línea que hemos trazado.
Es útil para cuando quieres usar un láser por ejemplo, así detectas la colisión desde el principio hasta el final del láser sin tener que hacer cosas raras con las mascaras de colisión.

Su uso es:
collision_line( x1, y1, x2, y2, obj, prec, notme );

x1: Coordenada X del punto 1
y1: Coordenada Y del punto 1
x2: Coordenada X del punto 2
y2: Coordenada Y del punto 2
obj: El object_index o instance_id del objeto que quieres ver si toca la línea.
prec: true utiliza el método "pixel perfect collision", pero el sprite tiene que tener activa la casilla "precise collision checking" para que funcione, lo normal es usar "false" para que se tome en consideración la boundary box de la máscara de colisión.
notme: Sólo es relevante si el objeto que corre el código coincide con el indicado en el parámetro "obj", entonces al usar "true", se excluye el objeto que corre el código, al usar "false" se considera para la colisión.

La función, en respuesta, en vez de traer "true" o "false", te devuelve el instance_id del objeto con el que colisiona.
Si ningún objeto colisiona con la línea, la función devuelve "noone".
Si 2 o más objetos colisionan con la línea, la función trae sólo 1 instance_id.
Los siguientes usuarios dieron las gracias a este tema: lucasflexx

11
Preguntas y respuestas / Re:¿Me ayudáis con esto?
« en: Octubre 28, 2018, 02:27:58 am »
Hola Pejota

En este caso Game Maker permite encadenar los "if" y "else" en una estructura infinita.
La estructura es la siguiente:
if (caso1) { código 1 }
else if (caso2) { código 2 }
else if (caso3) { código 3 }
else { el código cuando no ocurre ninguno de los 3 casos anteriores }

Para lo que necesitas, simplementa añade una cuarta condición indicando simplemente "else" y debería ejecutarse ese código para cuando no se cumple ninguno de los 3 casos anteriores.

Saludos
Los siguientes usuarios dieron las gracias a este tema: Pejota

12
Preguntas y respuestas / Re:¿Me ayudáis con esto?
« en: Octubre 27, 2018, 11:57:15 pm »
Buenas Pejota

No sé para qué tantos brackets innecesarios, puedes simplificarlo todo si usas el "and" o "&&" que sirve para enlazar condiciones.
"if (condicion1 = true) and (condicion2 = true) { hace algo }"

Acá he simplificado tu código, que a apreciación mía estaba correcto:

Código: [Seleccionar]
with (RealTortero2) {

if (sprite_index = FSB) && (image_index = 8) {
action_sprite_set(BH0, 0, 1);
}
else if (sprite_index = SDBS) && (image_index = 12) {
action_sprite_set(BH, 0, 1);
}
else if (sprite_index = SBS) && (image_index = 12) {
action_sprite_set(BH, 0, 1);
}

}

Hay algunos casos donde el image_index funciona raro, te recomiendo hacer image_index = 0 cada vez que cambias de sprite para asegurarte que se cumpla la condición.

Saludos
Los siguientes usuarios dieron las gracias a este tema: Pejota

13
Preguntas y respuestas / Re:Texto con subincides
« en: Octubre 23, 2018, 02:22:54 am »
Hola Johann

Nunca antes me lo había cuestionado, acá al parecer hay un sujeto que parece haber encontrado solución a tu problema.

https://stackoverflow.com/questions/37097331/how-to-write-subscript-text-in-game-maker

él crea dos fuentes, una pequeña y una grande y separa los draw events en script que ajustan la posición "x" del texto según el ancho del texto anterior, puede funcionar, aunque creo que se debe ajustar la posición "Y" del texto pequeño según si quieres dibujar un sub-índice o un super-índice.

Saludos
Los siguientes usuarios dieron las gracias a este tema: Johann, Yuzo

14
Preguntas y respuestas / Re:Problema con draw_healthbar
« en: Octubre 22, 2018, 01:10:44 pm »
Hola knd144

La función draw_healthbar tiene que tener un ancho fijo y el valor debe ir entre 0 a 100 (siendo 100 la barra completa).
Si le pones 30 se verá sólo un tercio de la barra.
valor = tu_valor * 100 / 30
Esa pequeña ecuación convierte tu valor de rango 0 a 30, a un rango de 0 a 100 para que puedas usarlo en la función

Saludos
Los siguientes usuarios dieron las gracias a este tema: knd144

15
Preguntas y respuestas / Re:Detener una animación realizada con "draw"
« en: Octubre 20, 2018, 03:25:08 pm »
En ese caso es mejor controlar la animación con una variable a parte.

Create Event
Código: [Seleccionar]
anim = 0
Step Event
Código: [Seleccionar]
if global.vida=0 && anim < 6 {
anim += 1
}

Draw Event
Código: [Seleccionar]
if global.vida=0 {
draw_sprite(spr_KO,anim,960,540);
}

Saludos
Los siguientes usuarios dieron las gracias a este tema: Pejota, Yuzo

Páginas: 1 2 3 ... 7