예제 #1
0
    public void FenceCables()
    {
        Ray        r;
        RaycastHit hit;
        int        SegIdx;

        sb = new StringBuilder("Cable", 8);
        r  = new Ray(_model.Find("RayCaster").position, Vector3.down);
        if (Physics.Raycast(r, out hit))
        {
            if (hit.collider.name.StartsWith("RoadSeg"))
            {
                SegIdx = System.Convert.ToInt16(hit.collider.name.Substring(7));
                foreach (Transform Cable in LCables)
                {
                    int     idx   = LCables.IndexOf(Cable);
                    Vector3 kerbL = Road.Instance.XSecs[SegIdx + 12 + idx * 6].KerbL;
                    Cable.position = transform.TransformPoint(LCablePoses[idx]);
                    float Dist = Vector3.Distance(Cable.position, kerbL);
                    Cable.localScale = new Vector3(1, 1, Dist);
                    Cable.LookAt(kerbL);
                }
                foreach (Transform Cable in RCables)
                {
                    int     idx   = RCables.IndexOf(Cable);
                    Vector3 kerbR = Road.Instance.XSecs[SegIdx + 12 + idx * 6].KerbR;
                    Cable.position = transform.TransformPoint(RCablePoses[idx]);
                    float Dist = Vector3.Distance(Cable.position, kerbR);
                    Cable.localScale = new Vector3(1, 1, Dist);
                    Cable.LookAt(kerbR);
                }
            }
            else
            {
                foreach (Transform Cable in LCables)
                {
                    Cable.localScale = Vector3.zero;
                }
                foreach (Transform Cable in RCables)
                {
                    Cable.localScale = Vector3.zero;
                }
            }
        }
    }