Halfpipe snapping in Skate games

Hi everyone,

I am wondering how skateboard games manage to make the player character snap into a halfpipe, slope, etc., so that they perfectly maintain momentum.

Here’s an example of what I mean:

The_Best_Skate_Clips_You_ll_See

I thought about creating a trigger volume on the edge of the pipe and applying gravity on overlap. Another idea was using a line trace to constantly track the angle of the character to any given ramp, adjusting it if needed. Both seem wrong/impractical.

I am an absolute beginner, so any help / best practices on how to implement this through blueprints would be highly appreciated.

Thanks in advance!

1 Like

Hey there @Lukkemeister! I can’t speak for more modern games, but some of the older games would just use some interpolation, blend animations, and constrain the player (or the board more accurately) to the plane or a spline dictated by the edge of the vert ramp.

Thanks for getting back @SupportiveEntity!

I am only vaguely familiar with the concepts you mentioned - would you mind elaborating a bit?

Sure! I wish I had some resources that were more pointed for you. The closest thing that goes over detecting things above and below you (that has lots of resources) is a climbing system.

From a high level, there’s three main parts you have to break this down into.

  • Edge Detection
  • Handling the player’s location
  • Animation Blending

Edge detection - you need to detect when a player is over a half pipe, which we will call an “edge” for the remainder of this explanation. Here is where you would decide if you are hand curating your pipes or detecting them automatically. For this explanation I will assume manual curation. Just like climbing and ledge grab systems, you will have to use a trace to check a collision matching a tag for your edges that you want to magnetize to, that your character can look for while it’s in the air.

You need a method of determining where the actual slope is, and how the player is intended to be angled. You can check the face normal of your downward trace and use that to determine which way your board should be angled as you come in.

Once the player detects that there is an edge below them, you can choose the criteria you want to be the decider if they begin to drop into it. My first thought is checking their horizontal and vertical speeds, if going up or too fast horizontally just ignore the detection, otherwise begin drop in.


Handling the Player’s Location - This part is a up to how you handle your player’s movement to begin with. My personal ethos when it comes to skating games, is that during actually skating, you don’t actually want to be using physics, but handling the movement yourself in a controllable way.

In any case, you would need to start nudging the player’s horizontal movement to make sure it’s at a location. Determining that location is the tricky part. You either have to hand curate each ramp/edge and leave a spline on the places you want to snap the player to, then get that when the player script confirms they are trying to drop in, or detect it automatically, which would be tracing to a valid face (based on where the face normal is pointed).

Once you know where you want the player to land, you can start either adding force/transforms each tick to nudge them the right way.


Animation Blending - I’m not super well versed in the art pipelines including animation, but the basic idea would be once the drop in is confirmed, you would start to blend whatever stance/tricks you were doing into a more appropriate stance for a skater to catch the landing in based on distance to the edge checked on tick from the trace. This includes using the trace from before to align the board/player correctly.