Ver la versión completa : coliciones y objetos
serlioner
08/02/2010, 18:11
hola, acabo de empezar con un juego tipo rpg en fenix, pero al poner un obketo el mapa de durezas deja de funcionar, y cuando lo coge el pers y desaparece vuelve a ir de nuevo, las coliciones las he echo basándome en el ejemplo del manual de fenix. Como puedo solucionar este problema, o porq es devido?.
gracias por uestra ayuda de antemano.
Y yo sin leerme aun el manual :D:D:D
Es que no se cómo pones el objeto o cómo usas el mapa de durezas, hay mil formas de hacerlo, pero por la información que das... ni idea ¿es que pones el objeto directamente sobre el mapa de durezas? ¿cómo haces la colision?
jean la montard
08/02/2010, 19:49
colisiones la eterna tortura ...
Sin codigo no hay solucion xDDD pega aqui lo que tengas para saber que haces bien y que haces mal...
PD: leete tus posts antes de enviarlos ... xDD
serlioner
08/02/2010, 20:53
bueno voy a dejar el código, esta muy sucio de todas las pruebas que me he liado a hacer
process juego()
begin
colorObstaculo=map_get_pixel(file1,47,591,413);
scroll[0].camera=player(100,50);
start_scroll(0,0,fondo,0,0,0);
item(420,296);
// Ponemos los items en las posiciones que queremos.
play_song(iddisparo,256);
// Bucle principal
loop
IF(map_get_pixel(file1,47,Son.x+despega_x,Son.y+de spega_y)==colorObstaculo)
obstacle=true;
ELSE
obstacle=false;
END
aquí la parte del código donde coge el color con el que ha de chocar y aquí dejo un poco del pers que hace referencia a esto
despega_x=0;
despega_y=0;
if(key(_right)) despega_x=2; direction=2;end
if(key(_left)) despega_x=-2; direction=4;end
if(key(_up)) despega_y=-2; direction=1;end
if(key(_down)) despega_y=2; direction=3;end
if (key(_right) and not key(_up) and not key(_down)and obstacle==false)
x=x+2;
if (graph<=10 or graph>=13) graph=10; end;
graph=graph+1;
flags=0;
end
gacias por vuestras respuesta.
masteries
08/02/2010, 21:15
Una buena opción para que la lectura de un mapa de durezas sea precisa es hacer varias lecturas por cuadro o frame.
Pero mucho cuidado, porque si haces esto en cada personaje, enemigo... puedes llegar a acumular cientos de lecturas del mapa de durezas por cuadro, en un juego tipo rpg lo mejor es marcar tiles no atravesables o leer tiles de durezas a partir de la posición en pantalla del personaje, pero para esto se han de utilizar tiles.
int precision;//esto lo declaras donde corresponda
from precision=-3 to 2:
IF(map_get_pixel(file1,47,Son.x+despega_x+precisio n,Son.y+de spega_y+precision)==colorObstaculo)
obstacle=true;
break;//sale de la lectura del mapa de durezas porque ya ha detectado un //obstaculo, sale del bucle from
ELSE
obstacle=false;
END
end//fin de from precision
No sé si es este tu problema, pero espero haber ayudado.
serlioner
08/02/2010, 21:35
gracias, aunq no survio para nada, esq este juego es un proyecto q me han mandao en el instituto y como no lo saq bien (esto me pasa por ir enseñando lo que ago pa la wiz en el instituto) ..... bueno.
mi problema es que al colocar un objeto me quedo sin colisiones, y si lo quito vuelven a ir perfecto.
Pues entonces creo que está clarísimo tu fallo:
El problema es de llamar a HIJO, concretamente de la linea
IF(map_get_pixel(file1,47,Son.x+despega_x,Son.y+de spega_y)==colorObstaculo)
¿No lo pillas? SON es una variable local predefinida, que contiene el ID de un proceso hijo, es decir, que ha creado el propio proceso, y es correcto que quieras usarlo para saber la ID del proceso PLAYER, pero es que tienes:
scroll[0].camera=player(100,50);
(...)
item(420,296);
ITEM tambien es hijo del proceso, por lo que también saldrá en la variable SON, y es el valor que te devuelve para leer MAP_GET_PIXEL. Hasta que este no muere, no vuelves a tener un único hijo para no confundir.
CONSEJOS:
Puedes usar GET_ID(TYPE player) para obtener su id, si es el único proceso de este nombre.
Puedes leer el valor que has guardado en scroll[0].camera, ya que esa es la ID del proceso prota que has creado.
O la mejor de todas: guardar la ID en una variable (privada o global, tu eliges, pero creo que global será mejor a la larga para consultar sus datos desde otros procesos) y después úsala para asignarla a scroll[0].camera y leer MAP_GET_PIXEL (y para otros menesteres futuros).
;)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.