du musst doch nichmal alle felder auf der map abfragen, es reicht ja, wenn du das rechteck zwischen
startpunkt x
und
endpunkt y
durchläufst.
wäre also dein startpunkt 3/1 und dein endpunkt 5/3
sähe das ja wie folgt aus:
x wird nicht geprüft, o wird geprüft.
und jetzt ist es eigentlich eine reine mittelstufen aufgabe, zu berechnen, ob ein quadrat geschnitten wird, oder nicht.
jede strecke hat eine steigung, in dem fall 1/1 bzw in pixel dann 16/16.
diese steigung findest du heraus und rechnest sie eben auf die tiles runter (bei 24/8 z.b. wärst du dann bei 16/5,33 (die kleinere zahl durch die größere * 16, die größere wird automatisch 16). dann kannst du einfach immer einmal die steigung drauf rechnen und testen ob das tile passierbar ist oder nicht.
EDIT: und da dein geschoss ja sicherlich auch eine gewisse größe hat, musst du eben in einer schleife dann noch die horizontale/vertikale in eben der größe des objects berechnen.
sähe in pseudo code dann vll so aus:
natürlich nicht komplett ausformuliert, wie es sein muss, aber sollte zur verdeutlichung reichen, was ich meine.