Cita de: Johann en Julio 03, 2019, 01:14:16 AMTienes razón, he cambiado la variable amb que era numerica, por otra coincidente con los nombres de los diferentes backgrounds y funcionó !
No creo que puedas usar cadenas de texto como nombre de recursos.
La variable mosaico va a tener como contenido un texto que no puedes usar en la función tile_add para agregar un tile, debes usar el nombre de un recurso de Game Maker, sin usar comillas
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.
1
Preguntas y respuestas / Re:tileset como variable ? comportamiento extraño
Julio 03, 2019, 01:31:19 AM2
Preguntas y respuestas / tileset como variable ? comportamiento extraño
Julio 02, 2019, 11:29:52 PM
Quiero cambiar el tileset dependiendo de algunas condiciones, pero game maker se comporta raro...
la variable "amb" es numerica, y la variable mosaico iría aqui :
El problema es que no funciona ( al cambiar la variable amb sigue igual), incluso cuando cambio completamente la variable mosaico, me sigue apareciendo el tileset que he usado antes... es una falla grafica que se arregla borrando caché o el codigo está mal o ambas ?
Gracias :) :)
Código [Seleccionar]
mosaico = "tileset"+string(amb);
la variable "amb" es numerica, y la variable mosaico iría aqui :
Código [Seleccionar]
if terreno = 0 {
for(var i = 0; i < room_height/32; i++)
{
for(var ii = 0; ii <room_width/32; ii++)
{
tile_add(mosaico, 256, 0, 32, 32, ii*32, i*32, 5000);
}
}
}
El problema es que no funciona ( al cambiar la variable amb sigue igual), incluso cuando cambio completamente la variable mosaico, me sigue apareciendo el tileset que he usado antes... es una falla grafica que se arregla borrando caché o el codigo está mal o ambas ?
Gracias :) :)
3
Preguntas y respuestas / No me detecta xprevious ni yprevious
Marzo 11, 2018, 10:41:10 PM
Hola, tengo este codigo, de la orientación de un enemigo, que en teoria detecta si ha cambiado de posición y lo cambia por su imagen correspondiente.
el tema es que no detecta que haya un cambio en la x ni en la y, ( y si, se está moviendo ).
Este es el codigo en create
Step
Muchas gracias !
Código [Seleccionar]
if (x == xprevious && y == yprevious)
{
image_speed = 0;
}
if xprevious < x {
if (image_index <= 9 || image_index >= 12)
{
image_index = 9;
}
if xprevious > x {
if (image_index <= 6 || image_index >=9 )
{
image_index = 6;
}
if yprevious < y
{
if (image_index <= 3 || image_index >= 6)
{
image_index = 3;
}
if yprevious > y
{
if (image_index <= 0 || image_index >= 3)
{
image_index = 0;
}
}}}}
el tema es que no detecta que haya un cambio en la x ni en la y, ( y si, se está moviendo ).
Este es el codigo en create
Código [Seleccionar]
hp = 30;
speed = choose ( 0.5,1,1.5)
direccion = choose (0,90,180 )
direction = direccion
image_speed = 0.3 * speed
Step
Código [Seleccionar]
depth = -y
if (place_meeting(x,y,obj_bala))
{
var magiaprop
magiaprop = instance_nearest(x,y,obj_bala);
hp -= global.damage; // **
{
}}
if ( hp < 0 )
{
instance_destroy(){
}}
//pared
if( place_meeting(x,y+ 12,obj_room)) {direction = 90} //arriba
if( place_meeting(x,y - 12,obj_room)) {direction = 270} //abajo
if( place_meeting(x - 12,y,obj_room)) {direction = 0} //izquierda
if( place_meeting(12+x,y,obj_room)) {direction = 180} //derechaa
//pared enemigos
if( place_meeting(x,y+ 12,par_enemy)) {direction = 90} //arriba
if( place_meeting(x,y - 12,par_enemy)) {direction = 270} //abajo
if( place_meeting(x - 12,y,par_enemy)) {direction = 0} //izquierda
if( place_meeting(12+x,y,par_enemy)) {direction = 180} //derechaa
//orientacion
if (x == xprevious && y == yprevious)
{
image_speed = 0;
}
if xprevious < x {
if (image_index <= 9 || image_index >= 12)
{
image_index = 9;
}
if xprevious > x {
if (image_index <= 6 || image_index >=9 )
{
image_index = 6;
}
if yprevious < y
{
if (image_index <= 3 || image_index >= 6)
{
image_index = 3;
}
if yprevious > y
{
if (image_index <= 0 || image_index >= 3)
{
image_index = 0;
}
}}}}
Muchas gracias !
4
Preguntas y respuestas / Re:Problema en autotile
Febrero 27, 2018, 08:59:08 PM
Bueno, ya he solucionado el problema, el problema es muy tonto y después de una siesta lo he solucionado a los 5 segundos.
El problema residía, en que si había un objeto a la derecha der = 1, pero a la hora de hacer la comprobación, lo comprobaba en de ... me había dejado de escribir la R... Problema solucionado
Código [Seleccionar]
if( place_meeting(x + 60,y,obj_room)) {der = 1 } //derecha
// binario ( sin uso)
bin = de + (iz*2) + (ab*4) + (ar*8)
//Tile 0
if( ar = 0) & (ab= 1) & (iz= 0) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
El problema residía, en que si había un objeto a la derecha der = 1, pero a la hora de hacer la comprobación, lo comprobaba en de ... me había dejado de escribir la R... Problema solucionado
5
Preguntas y respuestas / Re:Problema en autotile
Febrero 27, 2018, 07:50:39 PMCita de: 3dgeminis en Febrero 27, 2018, 06:36:16 PMsi, uso solo 11 porque omito muchas cosas como los bordes externos cuando hacen esquina y todas esas cosas, creo que si no las omitiera, tendría que dibujar 47 ( si no me equivoco )
Yo he hecho algo de autotile y me llama un poco la atencion de que uses 11 imagenes ademas de que repitas el uso de una imagen, pero sin ver las imagenes que usas talves este equivocado.
Lo que use para mi autotile fue algo parecido a esta parte de tu codigo [gml]bin = de + (iz*2) + (ab*4) + (ar*8)[/gml]
es mas simple y menos codigo para usar.
En esta parte [gml]if( place_meeting(x + 60,y,obj_room)) {der = 1 } //derecha[/gml] porque usas 60 en lugar de 48?
puse 60 para probar si era que la imagen no estaba centrada y no me la reconocía, pero se me olvido ponerlo bien otra vez. probaré a hacerlo en binario... a ver si el problema sigue....
6
Preguntas y respuestas / Problema en autotile
Febrero 26, 2018, 10:23:13 PM
:GMS:
Cuanto tiempo sin pasar por aquí ! Ahora que tengo mas tiempo he decidido darle mas horas al juego que estoy creando, bueno, al lío :
Estoy haciendo un script que crea las tiles ( que en realidad son frames de un objeto ) dependiendo de la posición que este el obj_room, el caso es que funciona perfecto excepto algunos bordes de la derecha.

este es el codigo.
Cuanto tiempo sin pasar por aquí ! Ahora que tengo mas tiempo he decidido darle mas horas al juego que estoy creando, bueno, al lío :
Estoy haciendo un script que crea las tiles ( que en realidad son frames de un objeto ) dependiendo de la posición que este el obj_room, el caso es que funciona perfecto excepto algunos bordes de la derecha.

este es el codigo.
Código [Seleccionar]
image_speed = 0
//Autotile
if( relax = false ) // esto hace que el step pare de buscar los objetos de las cercanias.
{
// da valor de 1 si hay un objeto al lado.
if( place_meeting(x,y+ 48,obj_room)) {ar = 1} //arriba
if( place_meeting(x,y - 48,obj_room)) { ab = 1} //abajo
if( place_meeting(x - 48,y,obj_room)) { iz = 1} //izquierda
if( place_meeting(x + 60,y,obj_room)) {der = 1 } //derecha
// binario ( sin uso)
bin = de + (iz*2) + (ab*4) + (ar*8)
//Tile 0
if( ar = 0) & (ab= 1) & (iz= 0) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 6
}
//Tile 1
if( ar = 0) & (ab= 0) & (iz= 1) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 1
}
//Tile 2
if( ar = 0) & (ab= 0) & (iz= 0) & (de= 1) & !(place_meeting (x,y,obj_room ))
{
image_index = 2
}
//Tile 3
if( ar = 0) & (ab= 1) & (iz= 0) & (de= 1) & !(place_meeting (x,y,obj_room ))
{
image_index = 3
}
//Tile 4
if( ar = 0) & (ab= 1) & (iz= 1) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 7
}
//Tile 5
if( ar = 1) & (ab= 0) & (iz= 0) & (de= 1) & !(place_meeting (x,y,obj_room ))
{
image_index = 5
}
//Tile 6
if( ar = 1) & (ab= 0) & (iz= 0) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 0
}
//Tile 7
if( ar = 1) & (ab= 0) & (iz= 1) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 4
}
//Tile 8
if( ar = 0) & (ab= 0) & (iz= 0) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 8
}
//Tile 9
if(place_meeting (x,y,obj_room ))
{
image_index = 9
}
//Tile 10
if( ar = 0) & (ab= 0) & (iz= 0) & (de= 0) & (place_meeting (x,y,obj_room ))
{
image_index = 10
//Tile
if( ar = 1) & (ab= 1) & (iz= 1) & (de= 0) & (place_meeting (x,y,obj_room ))
{
image_index = 8
}}}