TrailGroundFinder.cs

A Component that finds ground below its GameObject each update and snaps the object's world position Z to the hit point, and forces the object's rotation roll to 0 and pitch to 75 degrees.

Rough CodeReflection
using Sandbox;

public sealed class TrailGroundFinder : Component
{
	protected override void OnUpdate()
	{
		SceneTraceResult groundCheck = Scene.Trace.Ray( GameObject.WorldPosition + Vector3.Up * 50, GameObject.WorldPosition + Vector3.Down * 100 ) // 48 is radius
			.Radius( 10 )
			.WithoutTags("enemy", "player")
			.IgnoreGameObjectHierarchy( GameObject )
			.Run();

		GameObject.WorldPosition = GameObject.Parent.WorldPosition.WithZ(groundCheck.HitPosition.z);
		GameObject.WorldRotation = GameObject.WorldRotation.Angles().WithRoll( 0 ).WithPitch( 75 );
	}
}