Hello guys, I’m wanting to work on a parkour style of player movement for the fun of it, but before I can do that I need to know a bit about how to actually make certain mechanics. I’m not looking for code in the replies (however that does help), but instead more in-depth replies about the concept and implementation of the following movement mechanics.
– Jumping between 2 walls, what’s a good way to handle this?
Vaulting over obstacles
– More of a question about how to handle “moving” the player “pass” the obstacle and syncing the movement up with the animation.
Sliding across the floor/down slopes
– Think of how a rockstar slides across a stage. What would be a good way to handle this?
– Detecting when you’re on or near a ledge
– Catching/grabbing ahold of ledges when falling or jumping
– Jumping up from ledges when you’re holding onto one (might be the same mechanic as wall jumping, not sure.)
Now I do want to note that I am using the default Roblox avatar, however I willing to switch over to a custom avatar that uses bodyobjects if it’ll be easier to work with for these kind of mechanics.
There are a lot of factors to this. The two big ones are what kind of style of animation and physics are you going for(cartoonish or realistic), and what kind of style of camera are you going to be using.
Not really sure why camera would be an important factor, but over the shoulder/third person.
Style of animation / physics… cartoony-real animations, but more fun feeling physics which I think would be more cartoony then real?
Camera style could be important depending on the scenario. For example, if you’re in first person, a ton of movement could be too chaotic for a lot of players to take in, or in top down, a lot of vertical movement would look flat.
2 years later edit: This game is quite broken now due to subtle changes in how Roblox handles humanoid physics, and is really not a case study for what to do any more (if it every was lol)
I’m going to take this opportunity to shamelessly plug my own parkour game:
The way I went about making the parkour in game was to replace the roblox ControlScript and CameraScript with my own scripted solutions. This gave me a lot of control over how it looked and felt, but it does mean I can’t benefit from any updates to those scripts, and it’s a huge amount more work to port to console (didn’t even try on mobile lol).
The movement is mostly powered by a metric tonne of raycasting, which also isn’t very efficient. There are other ways, like you can premark points where you can do different moves, but raycasting gives a great amount of freedom in terms of map design.
The actualy movements use legacy body movers, and to make them feel natural I had to do a lot of stuff under the hood, to make it feel responsive.
I also have a (badly) scripted CFrame animation system, because I wanted to go for a more realistic style than normal animations allow. It’s not worth the time or performance, don’t bother with that.
Mostly body velocity, and it’s just stuff like making sure to update the velocity every tick with stuff like gravity, to make it seem more realistic. There’s also a lot of subtly incorporating user input even if it’s not realistic (mid-air movement etc.), makes it feel a lot more responsive.
In here you say that parkour mechanics are made with raycasting. I want to make it so that I could just drop an object into the workspace and the player will be able to interact with it using parkour. Maybe even the player being able to parkour meshes.
My question is how do I do this? I got an idea to make a “box” of raycasting around the player. Based on how the rays hit the object, along with the players rotation and position (cframe), the rays will be able to calclate the rotation and position of the object and do something.
But I really don’t know how to do this. I have seen tutorials everywhere but I just can’t seem to make it the way I want to make it. I know other stuff such as bodymovers, gravity, animation but I don’t know how to do the raycasting.
Sorry I replyed so late. Since there was already a topic for my problem, I did not want to make another copy of it.