This is way the wrong category for asking about what you specified. You placed it under Scripting Support but fail to follow the rules of how Scripting Support works. This falls under practically every category. You have a higher chance at getting this answered in Discussion, since the rules of Scripting Support is that you’ve already tried and that we’re not providing you with information when you haven’t tried information yourself.
An absurd amount of raycasting. Thats all I can give if you haven’t really attempted trying to search it up yourself.
There are an absurd amount of resources on this that can be found on the developer forums by simply searching or on youtube (even if its not lua it’ll still help with understanding).
Use resources like Developer Hub, Developer Forums, Etc
As @Warriorfoox said, this is wrong category. Also if you are new to scripting you can’t start with that advanced projects. I recommend starting with a simple obby, and later maybe continuing this project