Hola a todos,estoy creando un juego con una room bastante grande(10000 de weight y height) y a la hora de poner los limites, es decir los objetos que haran que el jugador se pare resulta bastante pesado, me preguntaba si habia alguna forma de hacer que un objeto se repita en una columna o fila de una room igual que los backgrounds, alguien lo sabe?
FUCK!!!! Finalmente un tema sin respuestas!!!!!!
Espero ayudarte ^w^
if global.asd<10
{
instance_create(x+10,y,Cosa)
global.asd+=1
}
si quieres que no sea exactamente al mismo pixel, podrias utilizar cosas random
if global.asd<10
{
instance_create(x+irandom_range(10,20),y,Cosa)
global.asd+=1
}
Perdon, tengo el game maker, pero no funciona la flechita verde para ejecutar (Solo funcionan los .exe de mis viejos juegos O.o)
EDIT: Va en el create event......... Y espero que te sirva :D
Cita de: TLT96 en Julio 09, 2013, 05:08:17 PM
if global.asd<10
{
instance_create(x+irandom_range(10,20),y,Cosa)
global.asd+=1
}
EDIT: Va en el create event......... Y espero que te sirva :D
mmmm... este te daría falllo... recuerda que antes de nada debes de darle un valor inicial a global.asd.... y además al ser en el evento create, sólo crearía un objeto, de forma que el código de arriba no te serviría :S
este si que te valerá
var a num incr;
a=0
num=50
incr=32
while (a<=num)
{
instance_create(x+a,y,obj)
a+=incr
}
en incr pones de valor el ancho del objeto que quieres poner...
en num pones el widht de la room dividido entre el ancho, por ejemplo 1000/32
el de arriba es para crearlos horizontalmente, para crearlos verticalmente sería igual solo que adaptando los valores al alto del objeto para incr y al heigth de la room/incr, y en vez de instance_create(x+a,y,obj), sería instance_create(x,y+a,obj)
quizás haya algún fallo, en ese caso me lo dices y lo intento solucionar ;)
salu2 :D
Cita de: darius en Julio 09, 2013, 09:01:08 PM
Cita de: TLT96 en Julio 09, 2013, 05:08:17 PM
if global.asd<10
{
instance_create(x+irandom_range(10,20),y,Cosa)
global.asd+=1
}
EDIT: Va en el create event......... Y espero que te sirva :D
mmmm... este te daría falllo... recuerda que antes de nada debes de darle un valor inicial a global.asd.... y además al ser en el evento create, sólo crearía un objeto, de forma que el código de arriba no te serviría :S
este si que te valerá
var a num incr;
a=0
num=50
incr=32
while (a<=num)
{
instance_create(x+a,y,obj)
a+=incr
}
en incr pones de valor el ancho del objeto que quieres poner...
en num pones el widht de la room dividido entre el ancho, por ejemplo 1000/32
el de arriba es para crearlos horizontalmente, para crearlos verticalmente sería igual solo que adaptando los valores al alto del objeto para incr y al heigth de la room/incr, y en vez de instance_create(x+a,y,obj), sería instance_create(x,y+a,obj)
quizás haya algún fallo, en ese caso me lo dices y lo intento solucionar ;)
salu2 :D
Y exactamente donde hay que poner exactamente el codigo, perdon esque todavia soy novato :-[
lo debes de poner en un evento create de un objeto que controle la creación, por ejemplo, un obj_control que está en cada room, al empezar la room el obj_control crea los sólidos. ponlo en la esquina superior izquierda de la room. espero que te haya servido :P
salu2
Solo se me crea uno, una cosa en obj pongo el objeto que quiero que replique?
si en obj pones el objeto que quieres repetir :-[
ya corregí el código, este te va a ir perfecto, es cierto que el otro solo creaba un objeto :-[
este codigo va perfecto, tu modifica los valores para adaptarlo...
//hecho por darius para CMG
var b a num incr;
//eje x
a=0
b=0
num=13
incr=32
while (b<=num)
{
b+=1
instance_create(x+a,y,solido)
a+=incr
}
//eje y
a=0
b=0
num=13
incr=32
while (b<=num)
{
b+=1
instance_create(x,y+a,solido)
a+=incr
}
te dejo el editable para que veas como crea los solidos a la derecha y hacia abajo
Edit: no modifiques ni la variable a ni la b
Yo te recomiendo que no crees miles de instancias al rededor del room (va a alentar tu juego muchísimo aunque las desactives), basta con poner un còdigo en outside the room como: "x=xprevious, y=yprevious o algo màs sofisticado". También puedes poner una sola instancia en cada esquina y modificar su image_xscale u image_yscale hasta que abarque el tamaño del room.
Cita de: brunoxzx en Julio 11, 2013, 09:11:59 AM
Yo te recomiendo que no crees miles de instancias al rededor del room (va a alentar tu juego muchísimo aunque las desactives), basta con poner un còdigo en outside the room como: "x=xprevious, y=yprevious o algo màs sofisticado". También puedes poner una sola instancia en cada esquina y modificar su image_xscale u image_yscale hasta que abarque el tamaño del room.
Te apoyo, si pone muchos objetos en una room gigante, se te ralentizara el juego enormemente, tengo experiencia en estas cosas :-[ ... lo mejor es usar algún código mas sofisticado. para usar el "previous" se me ocurre algo así:
If x<10{x=x}
If x>9990{x=xprevious}
If y<10{y=yprevious}
If y>9990{y=yprevious}
va en el evento steep (al final de todo lo demás en este evento, para evitar posibles errores)
creo que hay otra forma mas eficaz, ya que con esta el jugador al llegar a cierto borde comenzaría a "tiritar" XD
corrijanme si hay algo malo :-[
otra forma de evitar que se te relantice el juego es desactivando los sólidos que hay fuera de la view, pero si no lo sabes hacer te recomiendo lo que dijeron aqui arriba ;)
GALO le puse al objeto que quería que se replicara,el evento step(step normal) el ultimo de todos los eventos y luego le puse execute code y a continuación le puse tu código, pero me daba error en la primera linea If x asi que estuve probando y cambie todas las I mayúsculas por minúsculas y ya no me daba error pero siguen sin salirme los objetos replicados, te pongo todo el proceso por si me equivoque en algo de los eventos o las acciones me lo digas, y darius sustitui el codigo que habia puesto en el obj control create por el nuevo que me habias dado y le puse todos los valores en num y incr pero seguia replicando solo una vez.
los códigos que te di van en el evento step del jugador ;)
Cometí un error en el code anterior :-[ , prueba con este:
if x<10{x=xprevious}
if x>9990{x=xprevious}
if y<10{y=yprevious}
if y>9990{y=yprevious}
Cita de: darius en Julio 11, 2013, 03:19:50 PM
otra forma de evitar que se te relantice el juego es desactivando los sólidos que hay fuera de la view, pero si no lo sabes hacer te recomiendo lo que dijeron aqui arriba ;)
Hombre créeme poner miles de objetos sólidos al rededor del room no es la mejor solución, el loop de la desactivación por si solo es lento si hay muchas instancias. Por esto mismo la gente se queja de que no se pueden hacer rooms megaltramounstruosos, pero en realidad es que no saben como optimizar bien.
@Nanchelot: Los métodos que te sugiere Galo son buenos, aunque si sigues con la idea de poner muros, te sugiero que lo hagas como te dije en el otro post pones uno en cada esquina y modificas su "creation code" en el editor de rooms (das click derecho junto con control) y allí le pones a cada uno de los muros "image_xscale=10000"o algo así el chiste es que sea un muro que abarque todo el room de largo.
vale ya me funciona, gracias a todos por ayudarme!!! :D :D :D