Average the hit info from a list of GameObject's RaycastHits.

Edit - I’ve updated this question with a better example. Here is an update with code and [1].
Its easy to replicate this scene with a capsule GO, a few empty GO’s tagged Probes
Issues:

  1. Why are the rays lingering after they are initially drawn?

  2. Need help averaging the values of a list of hit.points and hit.normals - not sure why it places them back at 0, 0, 0.

    public class Raycasting2 : MonoBehaviour
    {
    [Header(“Probe Objects”)]
    public GameObject tProbes; //the terrain probe list
    public List surfPositions;
    public List surfNormals;

     public float probeLength = 2f;
     public float normalLength = 1f;
     private Vector3 pRay;
     private Vector3 averageTerrainNormal;
     private Vector3 averageTerrainPoint;
     private RaycastHit hit;
    
     // Use this for initialization
     void Start()
     {
     	tProbes = GameObject.FindGameObjectsWithTag("Probes"); //grab the objects tagged "Probes"
     	pRay = transform.TransformDirection(Vector3.down) * probeLength;
     }
    
     void Update()
     {
     	CastTerrainProbes();
     }
    
     void FixedUpdate()
     {
     }
    
     void CastTerrainProbes()
     {
     	for (int i = 0; i < tProbes.Length; i++)
     	{
     		Debug.DrawRay(tProbes*.transform.position, pRay, Color.black, normalLength);*
    

_ if (Physics.Raycast(tProbes*.transform.position, pRay, out hit, probeLength))_
_
{_
_
Debug.DrawRay(hit.point, hit.normal, Color.red, normalLength);_
_
}*_

* surfPositions.Add(hit.point);*
* for (int ii = 0; ii < surfPositions.Count; ii++)*
* {*
* averageTerrainPoint = surfPositions[ii] / surfPositions.Count;*
* }*

* surfNormals.Add(hit.normal);*
* for (int ii = 0; ii < surfPositions.Count; ii++)*
* {*
* averageTerrainNormal = surfNormals[ii] += surfNormals[ii] / surfNormals.Count;*
* Debug.DrawRay(averageTerrainNormal, hit.normal, Color.cyan, normalLength);*
* }*
* }*
* }*
}
Original Question
I’d like to raycasthit from a list of ‘terrain probe’ objects and average the normal returned. I’m a bit stuck on how to I iterate over the list and create a ray on each list item. I can do this individually, but thought it would be more efficient to batch the raycast process. This is a specific part of another question that is probably too broad [here][2].
Original Question
[1]: - YouTube
_*[2]: http://answers.unity3d.com/questions/1312111/seeking-advice-regarding-controller-setup-for-game.html*_

Debug.DrawRay(tProbes*.transform.position, pRay, Color.black, normalLength);*
Refer to the Unity documentation - all overloaded DrawRay() 4th parameter is float duration
> averageTerrainPoint = surfPositions[ii] / surfPositions.Count;
Here you are overwrighting value stored in averageTerrainPoint on each for iteration. No idea for what you are doing so, but it will surely not calculate average value anyway. You should sum your values and then divide it by values count