Improve player collision logic