new approach: use trigger instead of raycast