2014-05-08 4 views
6

मैं अपने पास कुछ स्क्वायर स्प्राइट्स से एक पंक्ति बनाने की कोशिश कर रहा हूं। इसलिए इन स्प्राइट की चौड़ाई प्राप्त करने के लिए मैंस्प्राइट की चौड़ाई प्राप्त करना

tileWidth = (int)tileSet[0].renderer.bounds.size.x; 

उपयोग कर रहा हूँ और फिर पंक्ति मैं

for(int i = 0; i < tileSet.Length ; i++){ 
    if((i+1)*tileWidth<screenWidth){ 
     tileSet[i].transform.position = new Vector3(i*tileWidth,0,0); 
    } 
} 

uisng हूँ लेकिन स्प्राइट अभी भी एक दूसरे अतिव्यापी हैं और एक उचित पंक्ति फार्म नहीं है के रूप में।
मैं यहां क्या गलत कर रहा हूं और मैं इसे कैसे सुधार सकता हूं?

उत्तर

7

यदि स्प्राइट का res 128x128 पिक्सेल है।
और यह स्प्राइट के पिक्सल इकाइयों के लिए 100

तो अपने tileWidth होगा: renderer.bounds.size.x = 128/100 = 1.28
लेकिन आप पूर्णांक का उपयोग करें: (int) renderer.bounds.size। एक्स = (int) 1.28 = 1
और यही कारण है कि आपके sprites एक दूसरे को ओवरलैप कर रहे हैं।

float tileWidth = (float)tileSet[0].renderer.bounds.size.x; 
+0

धन्यवाद ... पिक्सल के बारे में एक नई बात यूनिट – vaibhav

+1

के बारे में सीखा है अगर स्प्राइट घुमाया जाता है, तो यह अपेक्षा से बड़े या छोटे मूल्यों को वापस कर सकता है। – jjxtra

13

आप एकता 5 का उपयोग कर रहे हैं, तो आप इस कोड का उपयोग करना चाहिए:

float tileWidth = tileSet[0].GetComponent<SpriteRenderer>().bounds.size.x; 

भी आप प्रति यूनिट मूल्य पिक्सेल को Mus ध्यान।

संबंधित मुद्दे