else if ((guard.side == "right") && (guard.x > agent.x && agent.y <= guard.y + 100))
let obj = coll.filter(object => ( Math.sqrt(guardian.y - object.y*guardian.y - object.y) < 100))[0]
А можно по такой же схеме сделать чтоб он видел предметы- да,
и не видел за ними- хз
а после пробегаться по этим координатам и искать ближайший объект и проверять на столкновение+ учитывая радиус главного персонажа, зачем учитывать радиус главного персонажа ? - предположим кружок это твой основной персонаж, а его координаты это середина , так вот когда твой персонаж основной выходит из-за угла дома, если нужно что бы нпс видел сразу главного персонажа то нужно это делать с радиусом, а если без радиуса делать то тогда например когда основной персонаж выйдет из-за угла здания - нпс его заметит лишь тогда когда ТОЧКА ( середина игрока ) выйдет из-за угла только а не часть персонажа