Co tu mam bardziej opisywać? Gotowca Ci nie dam. A samymi Bboxami tego też nie zrobisz, musisz dodać do npc.trafo npc.Bbox i item.range i porównać, czy target znajduje się w zasięgu. Wiem, że chcesz zrobić pobieranie pozycji npc dla zadawania obrażeń, i nie, nie dasz rady tego zrobić samymi bboxami.
Dam Ci gotowca w formie niegotowej (jeśli mogę to tak beznadziejnie nazwać):
npc attacker; npc victim;
float attackerPos; float victimPos;
if bbox < 0 -> negate bbox
if trafo < 0 -> negate trafo
attackerPos = attacker.trafo + (attacker.bboxMax + attacker.bboxMin) + item.range;
victimPos = victim.trafo + (victim.bboxMax + victim.BboxMin);
if victimpos <= attackerPos-> deal damage
Aczkolwiek to tylko domysł. Nie wiem, czy aby na pewno to tak zadziała.
Drugą opcją może być odejmowanie pozycji trafo i dodawanie do tego bbox i item.range.