Il faudrait procéder à l'envers en fait. Le dernier cube afficher devra masquer la partie sur laquelle il passe par dessus, du cube d'en dessous. En gros, s'il y a collision entre le cube du dessus et du dessous, tu dois mettre les pixels en question avec une transparence maximal pour les cachés, et le reste du sprite, à la transparence souhaitée.
Mais ce que je te conseille, c'est de séparer tes objets en différents sprites, et lorsque ton personnage passe derrière ton mur(par exemple), simplement modifier la transparence de celui-ci. ça sera nettement plus rapide, et avec ce système, tu n'aura qu'un seul sprite pour ton mur, ce qui évitera de le générer X fois.