मैं एकता में एक समायोज्य रस्सी बनाने की कोशिश कर रहा हूं और मैंने मूल रूप से एक सरणी संशोधक बनाया है।

मैं अंतिम इंडेक्स का उपयोग करके आखिरी तत्काल वस्तु प्राप्त कर सकता हूं लेकिन मैं वर्तमान वस्तु के हिंग संयुक्त को कैसे प्राप्त करूं और पिछली वस्तु के कठोर शरीर को वर्तमान वस्तुओं से जुड़े शरीर में जोड़ूं?

public class Rope : MonoBehaviour {

    public GameObject Segment1;
    int segmentName = 1;

    public int ropeLength; // length of rope
    GameObject[] segmentArray; // stores gameobjects in array

    Rigidbody[] segmentRb; // stores rigidbodys
    HingeJoint[] segmentHj; // stores Hingjoints

    Vector3 newSegmentLoc;

    void Start () {

        segmentArray = new GameObject[ropeLength];
        SpawnSegment();
    }

    void Update () {

    }

    void SpawnSegment(){ 

            void SpawnSegment(){ 

        for (int i = 1; i < ropeLength; i++) {

            segmentArray [i] = Instantiate (Segment1, newSegmentLoc, Quaternion.identity) as GameObject; // spawn in clones
            segmentArray [i].transform.parent = this.transform; // set parent of clones
            segmentArray [i].transform.name = segmentName.ToString (); // change the name of clones
            segmentName++;

            //int currentIndex = Array.IndexOf (segmentArray, segmentArray [i]);

            float yLoc = segmentArray [i].transform.position.y;
            newSegmentLoc = new Vector3 (0, yLoc - 1, 0);

            //int lastIndex = Array.LastIndexOf (segmentArray, segmentArray [i]);

            Rigidbody rb = segmentArray [i].gameObject.GetComponent<Rigidbody>();
            HingeJoint hj = segmentArray [i - 1].gameObject.GetComponent<Rigidbody>().GetComponent<HingeJoint>();

            hj.connectedBody = rb;
        }

        Destroy (Segment1);

    }

}
0
Spooge19 28 अप्रैल 2016, 20:13

1 उत्तर

सबसे बढ़िया उत्तर

आपके फॉर-लूप में i पहले से ही मौजूदा इंडेक्स है, आपको इसकी गणना करने की आवश्यकता नहीं है। यदि आप पिछला तत्व चाहते हैं, तो आप केवल segmentArray[i - 1] कहें, यदि आप अगला चाहते हैं segmentArray[i + 1]

लेकिन सावधान, हो सकता है कि उन्हें प्रारंभ नहीं किया गया हो। यदि आप वर्तमान में सेगमेंटअरे [i + 1] प्राप्त करने का प्रयास करते हैं, तो यह शून्य हो जाएगा।

तो आप लूप के बाहर 0 वें तत्व को भी प्रारंभ करना चाहेंगे। यह आपको लूप को i = 1 से शुरू करने की अनुमति देता है और करंट को अगले से जोड़ने के बजाय, आप पिछले को करंट से जोड़ते हैं।

0
yes 30 अप्रैल 2016, 18:53