I’ve a script that makes raycasts to see which rough angle has the greatest distance in front of us. It’s making the car spin around and I imagine it has to do with me not understanding local vs global transforms. Anyways here it is:
Vector3 SteerThing(){
RaycastHit hitInfo;
float i = 0;
Vector3 nextVector;
float dist= Mathf.Infinity;
Vector3 returnDirection= Vector3.zero;
for(i=0 ; i<7; i++)
{
nextVector= Vector3.Lerp(transform.TransformDirection(Vector3.right),transform.TransformDirection(Vector3.left),i);
Physics.Raycast(
transform.position,
nextVector,
out hitInfo,
Mathf.Infinity,
myLayerMask);
if(hitInfo.distance<dist)
{
dist=hitInfo.distance;
returnDirection =nextVector;
Debug.DrawRay(transform.position,nextVector*50);
}
}
return returnDirection;
}
Vector3 SteerThing(){
RaycastHit hitInfo;
int i = 0;
int res =5;
Vector3 nextVector;
float dist= 0f;
Vector3 returnDirection= Vector3.zero;
distancesList.Clear ();
distDict.Clear ();
for(i=0 ; i<res; i++)
{
nextVector= Vector3.Lerp (-transform.right,transform.forward,(float)i/res);
Physics.SphereCast(transform.position,.3f, nextVector, out hitInfo,Mathf.Infinity, myLayerMask);
Debug.DrawRay(transform.position,nextVector*5);
distances*=hitInfo.distance;*
-
distDict[hitInfo.distance]=nextVector;*
-
}for(i=0 ; i<res; i++)*
-
{*
-
nextVector= Vector3.Lerp (transform.forward,transform.right,(float)i/res);*
-
Physics.SphereCast(transform.position,.3f, nextVector, out hitInfo,Mathf.Infinity, myLayerMask);*
_ Debug.DrawRay(transform.position,nextVector*5);_
-
distances[i+res]=hitInfo.distance;*
-
distDict[hitInfo.distance]=nextVector;*
-
}*
-
var list= distDict.Keys.ToList ();*
-
list.Sort ();*
-
returnDirection=distDict[list.Last()];// list.Last().Key;*
-
//Debug.Log (distDict[list.Last()]+" "+distDict[list.First()]);*
-
// returnDirection=Vector3.Lerp (-transform.right,transform.right,(float)discancesList/res)+transform.forward;*
-
return returnDirection;*
-
}*