Istnieje coś takiego jak raytracing, ale to wyższa szkoła jazdy. Możesz za to po prostu sprawdzać kąt między graczem, a wrogiem i od tego uzależnić to czy gracz celuje we wroga czy nie. To byłby prosty sposób, ale działałby tylko na jednej płaszczyźnie. Wystarczy od direction gracza odejmować point_direction(gracz.x, gracz.y,wróg. x,wróg. y) i zapisywac to sobie w jakiejś zmiennej u wroga i po prostu sprawdzać jeżeli ta zmienna jest większa od np. -30 i mniejsza od 30 to może być wróg postrzelony