A nice simple way of adding this kind of stuff is to have a raycast in front of the player about as high as they should be able to reach pointing down, then if that gets a collision the collision point is used to somehow check the area above it to make sure it is empty enough for a player to jump up. It would only really work for "gamey" representations of mantling but i think it would work
The only reason I'm hesitant to implement a system like this is that you have to design your levels with that specific setup on every single platform. Would prefer a more code-based approach myself
I understand the concern about level design constraints with a platform-specific setup. A code-based approach definitely offers more versatility and scalability across different platforms. That's the beauty of coding-you have the freedom to iterate and adapt this idea to suit your needs. Feel free to experiment and tweak things to find what works best for you!
Its all about tradeoffs, for handmade levels this approach is ideal because you never have to worry about players climbing where they're not supposed to (it is also easier to test). For a code based approach its easy to generate or handle climbing at runtime, but you need to decide in code about what constitutes a climbable surface, which comes with its own edge cases and jank.
Hey everyone! Welcome to the climbing adventure! 🧗♂ I hope this tutorial was helpful. If you want to ask me anything, please feel free to let me know your questions here in the comments section. I will gladly answer them. I wish you a wonderful week.🙂 Edit: Hey everyone, a quick addition I forgot to mention! If your player controller's pivot is located in the middle, try adjusting the 'vertical_climb' variable like this: var vertical_climb = Vector3(global_transform.origin.x, (place_to_land.position.y + collision_shape.shape.height / 2), global_transform.origin.z). This tweak should smoothen things out and get it working seamlessly. Give it a shot and let me know how it goes! Happy climbing! 🧗♂
Can you make Player spawner, and whatever how many spawner is placed in scene, you get randomly spawn on them like roblox. And your tutorial is great, keep up the good work.
@@harushinwhatever Thanks for the awesome idea! I'll look into creating a random player spawn system like in Roblox. Really appreciate your support and I'm glad you liked the tutorial!
If it still doesn't work, or in special cases, it still doesn't allow the character to climb, you'll also need to add var place_to_land = raycast(start_hit.position + self.to_global(Vector3.FORWARD) * standing_collision_ shape.shape.radius + (Vector3.UP * standing_collision_shape.shape.height / 2), Vector3.DOWN * (standing_collision_shape.shape.height)), on top of the original place_to_land to make the collision_shape.shape.height / 2 on top of the original place_to_land, so that it works fine!
For anybody encountering issues with the obstacle detector not colliding with your map, get Jolt physics off of the asset store, set it to the current physics engine, restart godot, go into project settings, go into the menu "Jolt 3D" and check "Areas detect Static Bodies" and it should work.
Wow, thank you! I'm absolutely thrilled to hear that you're loving the channel. Your support means a ton to me! I've got loads more content planned, so stay tuned for more awesome stuff. If you ever have any suggestions or ideas you'd like to see, feel free to drop them here. Thanks a bunch for being part of this awesome community!
If you mean the camera movement when the player controller is vaulting/climbing then, that is made with tweens you can check the GitHub link if you are interested. Happy coding!
Hello! You seem very helpful. Can help me or us viewers how to implement a movement system that is perfect for rigid body collisions? I've seen a lot of movement tutorials and I made a bunch of movement types but nothing was as stable as the movement in HL2 from 2004. I'm planning a game where you can manipulate anything like back in the days when HL2, Amnesia etc. Came out. This kind of freedom died out in the years.