En GMS2 solo se pueden poner tiles alineadas a la rejilla. Para poner tiles en otras posiciones tendrías que usar objetos.
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.
182
Preguntas y respuestas / Re:Duda con hspeed y vspeed
Mayo 04, 2019, 04:11:16 AM
Es para tener control total del movimiento de las instancias. Muchas veces es más fácil programar la respuesta a las colisiones separando el movimiento en horizontal y vertical.
183
Preguntas y respuestas / Re:como creo una plataforma atrabesable desde abajo y solida desde arriba
Mayo 01, 2019, 04:12:33 AM
El método depende de cómo están programdos los movimientos y el sistema de colisiones.
He visto una forma sencilla de programarlo; si la posición "y" del bloque es mayor a la posición "y" del player, solid = true, en caso contario solid = false.
Hace unas horas programé un plataformero con plataformas atravesables. Este es el código que utilicé
[gml]
if (vy > 0){//velocidad vertical positiva
with (obBloqueUnaVia) {
//si los pies del personaje estaban sobre el bloque
if (other.yPrev + other.boxD <= y)
if block_meeting(other.id) {
other.y = y - other.boxD; //desplazar personaje hacia arriba
other.piso = true;
other.saltando = false;
other.vy = 0;
}
}
}
[/gml]
Utilizo variables de colisión que reemplazan a las variables predefinidas de GMS, para tener colisiones más precisas. El problema de GMS es que utiliza cajas de colisiones con valores redondeados.
Muestra el código que utilizas, para ver cómo lo podemos adaptar.
He visto una forma sencilla de programarlo; si la posición "y" del bloque es mayor a la posición "y" del player, solid = true, en caso contario solid = false.
Hace unas horas programé un plataformero con plataformas atravesables. Este es el código que utilicé
[gml]
if (vy > 0){//velocidad vertical positiva
with (obBloqueUnaVia) {
//si los pies del personaje estaban sobre el bloque
if (other.yPrev + other.boxD <= y)
if block_meeting(other.id) {
other.y = y - other.boxD; //desplazar personaje hacia arriba
other.piso = true;
other.saltando = false;
other.vy = 0;
}
}
}
[/gml]
Utilizo variables de colisión que reemplazan a las variables predefinidas de GMS, para tener colisiones más precisas. El problema de GMS es que utiliza cajas de colisiones con valores redondeados.
Muestra el código que utilizas, para ver cómo lo podemos adaptar.
184
Preguntas y respuestas / Re:Huesos(bone)?
Mayo 01, 2019, 03:47:56 AM
Dentro de GMS no se pueden agregar huesos. Debes usar Spine o DragonBones.
185
Preguntas y respuestas / Re:El juego se queda congelado cuando le ordeno que vaya a una room
Abril 28, 2019, 03:23:25 AM
No encuentro un error en el código. Lo único que se me ocurre es que en los if pongas == en lugar de =.
Si puedes sube el proyecto, así podría ser más fácil encontrar el error.
Si puedes sube el proyecto, así podría ser más fácil encontrar el error.
186
Preguntas y respuestas / Re:DRAW_TEXT no muestra nada
Abril 28, 2019, 03:13:22 AM
¿En el efecto fade-in utilizas draw_set_alpha?, esa función también afecta a draw_text. Después de dibujar el rectángulo o antes de dibujar el texto de los botones debes poner
[gml]
draw_set_alpha(1);
[/gml]
[gml]
draw_set_alpha(1);
[/gml]
187
Juegos completos / Re:My Chemical Simulator Lite
Abril 27, 2019, 03:15:03 AM
Con mis pobres conocimientos de química apenas he logrado 6 reacciones. Estaría bien que tuviera una breve descripción de las moléculas para aprender más, tal vez no una descripción técnica, sino que explique en dónde se encuentran en la vida cotidiana. Algunas pistas serían de ayuda para los que no estudiamos química.
188
Preguntas y respuestas / Re:DUDAS CON GET_STRING
Abril 27, 2019, 02:38:24 AM
Limitar el número de dígitos no se puede, tendrías que modificar la cadena después de cerrar el cuadro de get_string.
Que el cursor aparezca automáticamente no se cómo se puede solucionar.
El manual recomienda utilizar get_string_async, pero es más difícil de usar porque se debe utilizar un evento asíncrono, además el juego no se pausa. No se cuál es la razón por la que el manual recomienda esta función.
Para tener las 2 caracterísitcas que necesitas debes programar tu propio cuadro de texto o usar una extensión.
Que el cursor aparezca automáticamente no se cómo se puede solucionar.
El manual recomienda utilizar get_string_async, pero es más difícil de usar porque se debe utilizar un evento asíncrono, además el juego no se pausa. No se cuál es la razón por la que el manual recomienda esta función.
Para tener las 2 caracterísitcas que necesitas debes programar tu propio cuadro de texto o usar una extensión.
189
Preguntas y respuestas / Re:ayuda con la animacion de mi sprite
Abril 23, 2019, 03:47:02 AM
Si el sprite viendo a la derecha es igual al sprite viendo a la izquierdo, solo invertido, puedes aprovechar la variable image_xscale.
Cambia el código de esta forma
[gml]
if keyboard_check(vk_right) {
image_xscale = 1;
}
else if keyboard_check(vk_left) {
image_xscale = -1;
}
if (vsp == 0) {//en el piso
if (hsp == 0) sprite_index = spParado;
else sprite_index = spCaminando
}
else {//en el aire
sprite_index = spSaltando;
}
[/gml]
(La condición para saber en el piso debe ser diferente, ya que la velocidad vertical podría ser cero al colisionar por arriba)
Cambia el código de esta forma
[gml]
if keyboard_check(vk_right) {
image_xscale = 1;
}
else if keyboard_check(vk_left) {
image_xscale = -1;
}
if (vsp == 0) {//en el piso
if (hsp == 0) sprite_index = spParado;
else sprite_index = spCaminando
}
else {//en el aire
sprite_index = spSaltando;
}
[/gml]
(La condición para saber en el piso debe ser diferente, ya que la velocidad vertical podría ser cero al colisionar por arriba)
190
Preguntas y respuestas / Re:No funciona el position meeting cuando activo las vistas
Abril 23, 2019, 03:36:27 AM
¿Usas un objeto para detectar colisión con los botones? Es más eficiente usar la función point_in_rectangle o position_meeting
Las coordenadas de la GUI son independientes de las coordenadas de la room. Debes usar las funciones device_mouse_x_to_gui y device_mouse_y_to_gui
Las coordenadas de la GUI son independientes de las coordenadas de la room. Debes usar las funciones device_mouse_x_to_gui y device_mouse_y_to_gui
191
Preguntas y respuestas / Re:Cómo exportar para Android en GM Studio 1
Abril 21, 2019, 08:26:06 PM
Solo googlea el mensaje de error y encontrarás algunas soluciones.
Lo recomendable es no instalar Android Studio completo, tiene muchas herramientas que no se utilizan con GMS. Debes ir hasta la parte de abajo de la página y descargar en la sección que dice "Conmmand line tools only".
Lo recomendable es no instalar Android Studio completo, tiene muchas herramientas que no se utilizan con GMS. Debes ir hasta la parte de abajo de la página y descargar en la sección que dice "Conmmand line tools only".
192
Preguntas y respuestas / Re:ayuda con la animacion de mi sprite
Abril 21, 2019, 08:11:14 PM
Puedes estructurar el código de muchas maneras, pero par aque sea más fácil ayudarte, muestranos el código que utilizas.
193
Preguntas y respuestas / Re:Cambiar la forma en la que se escucha la música
Abril 19, 2019, 05:21:24 PM
GMS no tiene funciones para efectos de audio.
Puedes crear varias versiones de la música y usar un grupo de audio sincronizado.
Puedes basarte en este ejemplo del manual.
https://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/sounds/audio_play_in_sync_group.html
Para hacer una transición suave, coloca un valor mayor a cero en el tercer parámetro de la función audio_sound_gain.
[gml]
audio_sound_gain(snd[0], 1, 2); //subir todo el volumen de la primera pista
audio_sound_gain(snd[1], 0, 2); //silenciar la segunda pista
[/gml]
Puedes crear varias versiones de la música y usar un grupo de audio sincronizado.
Puedes basarte en este ejemplo del manual.
https://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/sounds/audio_play_in_sync_group.html
Para hacer una transición suave, coloca un valor mayor a cero en el tercer parámetro de la función audio_sound_gain.
[gml]
audio_sound_gain(snd[0], 1, 2); //subir todo el volumen de la primera pista
audio_sound_gain(snd[1], 0, 2); //silenciar la segunda pista
[/gml]
194
Preguntas y respuestas / Re:pointer para armas
Abril 17, 2019, 04:16:10 PM
La forma más fácil es usar la función draw_line()
[gml]
angulo = point_direction(x,y, mouse_x,mouse_y);
image_angle = angulo;
draw_line(x,y, x+lengthdir_x(1000,angulo), y+lengthdir_y(1000,angulo));
draw_self();
[/gml]
si quieres que sea una línea punteada, puedes usar un sprite pequeño, pero dibujado a escala
[gml]
angulo = point_direction(x,y, mouse_x,mouse_y);
image_angle = angulo;
draw_sprite_ext(spStrips,0, x,y, 20, 1, angulo, c_red, 1);
draw_self();
[/gml]
Ejemplo en GMLive
[gml]
angulo = point_direction(x,y, mouse_x,mouse_y);
image_angle = angulo;
draw_line(x,y, x+lengthdir_x(1000,angulo), y+lengthdir_y(1000,angulo));
draw_self();
[/gml]
si quieres que sea una línea punteada, puedes usar un sprite pequeño, pero dibujado a escala
[gml]
angulo = point_direction(x,y, mouse_x,mouse_y);
image_angle = angulo;
draw_sprite_ext(spStrips,0, x,y, 20, 1, angulo, c_red, 1);
draw_self();
[/gml]
Ejemplo en GMLive
195
Preguntas y respuestas / Re:Mover una view al tocar un objeto
Abril 16, 2019, 04:19:12 PM
Creo que la mejor forma es no colisionar con un objeto. En el evento Outside View puedes poner algo como esto
[gml]
view_xview[0] = (x div 256) * 256;
view_yview[0] = (y div 144) * 144;
[/gml]
o como esto
[gml]
view_xview[0] = floor(x / 256) * 256;
view_yview[0] = floor(y / 144) * 144;
[/gml]
(256 y 144 son las dimensiones de la view)
No es necesario que el personaje salga por completo de la view para moverla. Por ejemplo, podrías detectar si la mitad del personaje ha salido de la view en el evento Step.
Adjunto un ejemplo
[gml]
view_xview[0] = (x div 256) * 256;
view_yview[0] = (y div 144) * 144;
[/gml]
o como esto
[gml]
view_xview[0] = floor(x / 256) * 256;
view_yview[0] = floor(y / 144) * 144;
[/gml]
(256 y 144 son las dimensiones de la view)
No es necesario que el personaje salga por completo de la view para moverla. Por ejemplo, podrías detectar si la mitad del personaje ha salido de la view en el evento Step.
Adjunto un ejemplo