Buenas tardes:
Normalmente cuando se pregunta una duda posteas lo que llevas hecho, o al menos la especificación aunque no muestres los detalles de implementación para que nos hagamos una idia. Por cómo lo has descrito voy a suponer que te refieres a este juego:
https://www.youtube.com/watch?v=2btqbTFtwSoDebes dividir el mapa en un array bidimensional donde en cada posición hay un objeto de la clase "Terreno":
Terreno: ¡No es el suelo de todo el mapa! sino que es un fragmento del mapa y va a tener las siguientes variables:
int x;
int y;
boolean caminable;
Image imagen; (Este tipo no es real, aqui depende del que tú uses para cargar la imagen).
Cuando crees un objeto de tipo "Terreno", sus valores "x" e "y" definirán en qué posición del mapa se encuentra y la variable "caminable" nos dirá si el personaje puede pisarla o no. Por tanto tu mapa se dividirá en un montón de objetos "Terreno" de la siguiente manera:
T = Objeto de tipo Terreno
T T T T T T T
T T T T T T T
T T T T T T T
T T T T T T T
T T T T T T T
T T T T T T T
T T T T T T T
T T T T T T T
...
(Será tan largo como objetos terreno añadas).
Cuando tu personaje se vaya a mover, hará la siguiente comprobación:
if (terrenoActual.adyacente(direccion).caminable == true) //Movemos el personaje si se cumple la condición, sino no hará nada
terrenoActual es una variable que debes añadir al PERSONAJE que apunta al terreno en el que se encuentra posicionado en este momento, cada vez que muevas el personaje cambias su valor a la nueva posición.
terrenoActual.adyacente(direccion) es un método que devuelve el terreno adyacente en la dirección que le pases (debes implementarlo).
terrenoActual.adyacente(direccion).caminable -> Ahora que tenemos el terreno adyacente, por ejemplo, el personaje se quiere mover hacia arriba, y por tanto el terreno que hemos obtenido con
terrenoActual.adyacente(direccion) es justo la posición de arriba, comprobamos si la variable caminable es igual a
true (es decir se puede caminar sobre él), sino no hará nada el personaje y se quedará en la misma posición.
Si no has comprendido alguna cosa comenta. Ten en cuenta que esto es la base de los videojuegos en dos dimensiones, el 90% de los juegos 2D utilizan este sistema de colisión de mapas con objetos no movibles.
Un saludo.