Hello i am having some trouble trying to do this in Pic1, but i am having a hard time in doing it, i tried using Modulo but i could not get the objects positions so i could not finish the process, does anyone know how to do this?
-Pic1
[77498-capture48.png*_|77498]
Here is the (functioning)code i am trying to implement it to
public class roundedSpline : MonoBehaviour
{
[System.Serializable]
public class SplinePoint
{
public Transform t;
public Transform cpAhead;
public Transform cpBehind;
public int seg;
public SplinePoint(Transform thetrans, Transform a, Transform b, int s)
{
t = thetrans;
cpAhead = a;
cpBehind = b;
seg = s;
}
}
public List<Transform> controlPointsList;
public List<SplinePoint> splinePoints;
public Transform segment;
public int segCount = 2;
public float updateRate = 60f;
public bool setup = false;
public bool running = false;
void Start()
{
splinePoints = new List<SplinePoint>();
CreateObjects(segment);
}
public void CreateObjects(Transform original)
{
for (int i = 0; i < controlPointsList.Count - 1; i++)
{
for (int j = 0; j < segCount; j++)
{
var a = Instantiate(original, Vector3.zero, Quaternion.identity) as Transform;
splinePoints.Add(new SplinePoint(a.transform, controlPointsList[i + 1], controlPointsList*, j));*
}
}
setup = true;
}
void Update()
{
if (setup && !running)
{
UpdateSplinePos();
}
}
void UpdateSplinePos()
{
for (int i = 0; i < splinePoints.Count; i++)
{
SetPosition(splinePoints*);*
}
}
SplinePoint GetSplinePoint(int s)
{
SplinePoint sp = null;
if (splinePoints.Count > 0)
{
for (int i = 0; i < splinePoints.Count; i++)
{
if (splinePoints*.seg == s)*
{
sp = splinePoints*;*
break;
}
}
}
return sp;
}
void OnDrawGizmos()
{
Gizmos.color = Color.white;
for (int i = 0; i < controlPointsList.Count; i++)
{
Gizmos.DrawWireSphere(controlPointsList*.position, 0.3f);*
}
for (int i = 0; i < controlPointsList.Count - 1; i++)
{
Gizmos.DrawLine(controlPointsList*.position, controlPointsList[i + 1].position);*
}
}
void SetPosition(SplinePoint sp)
{
float dist = Vector3.Distance(sp.cpAhead.position, sp.cpBehind.position);
float step = dist / (segCount + 1);
Vector3 dir = (sp.cpAhead.position - sp.cpBehind.position).normalized;
sp.t.position = sp.cpBehind.position + ((dir * step) * (sp.seg + 1));
sp.t.rotation = Quaternion.LookRotation(dir);
}
}
_*