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.
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 );
}
}