मेरे पास ऑब्जेक्ट्स का एक सेट है जिसे मैं स्क्रीन पर ले जा रहा हूं। या तो 200 x 200 या 120 x 120 होने जा रहे हैं और केवल x दिशा में दाएं या बाएं चलेंगे। मुझे वस्तुओं की शुरुआती स्थिति की गणना करने की आवश्यकता है

मुझे लगता है कि यह सरल गणित होना चाहिए, जहां आकार की वस्तुओं के लिए 120x120: (शून्य स्क्रीन का सबसे बायां किनारा है)

अंतरिक्ष = 10 (पिक्सेल)

ऑब्जेक्ट 0 -120 से शुरू होता है)

ऑब्जेक्ट 1 -240 + स्पेस से शुरू होता है

ऑब्जेक्ट 2 -360 + स्पेस से शुरू होता है

ऑब्जेक्ट 3 -480 + स्पेस से शुरू होता है

... ऑब्जेक्ट 9 -1080 + स्पेस से शुरू होता है

लेकिन यह काम नहीं कर रहा है, वे अधिक से अधिक संरेखण से बाहर हो जाते हैं और गणना आगे बढ़ती है। जब मैं उन्हें स्थानांतरित करता हूं तो वे अपने गठबंधन से बाहर की स्थिति में रहते हैं, क्योंकि मैं प्रत्येक वस्तु में समान मात्रा में गति जोड़ रहा हूं।

मैन्युअल रूप से x स्थिति दर्ज करने के बजाय किसी दिए गए बिंदु से शुरुआती x स्थिति की गणना करना भी अच्छा होगा, x के लिए लेखांकन सकारात्मक या नकारात्मक हो सकता है।

0
alphablender 17 जुलाई 2011, 00:40
वस्तु को 120 पिक्सेल चौड़ा मानने के बजाय, यदि आप सोचते हैं कि यह 120+ स्पेस पिक्सेल चौड़ा है, तो आप वांछित प्रभाव प्राप्त करने के लिए एक दूसरे के ठीक "अगला" रख सकते हैं।
 – 
JCooper
17 जुलाई 2011, 01:09

1 उत्तर

सबसे बढ़िया उत्तर
getPositionOfNth(int objectWidth, int startPosition, int objectNumber, int space){
    return startPosition + objectNumber * (objectWidth + space);
}

अब आपके उदाहरण के लिए:

getPositionOfNth(120, 0, 0, 10) == 0
getPositionOfNth(120, 0, 1, 10) == 130
getPositionOfNth(120, 0, 2, 10) == 260
getPositionOfNth(120, 0, 2, 10) == 390
...
0
Petar Ivanov 17 जुलाई 2011, 00:44
तो startposition=objectnumber*(objectwidth+space) अगर मैं इसे सही ढंग से पढ़ता हूं?
 – 
alphablender
17 जुलाई 2011, 00:55
प्रारंभ स्थिति+ऑब्जेक्टनंबर*(ऑब्जेक्टविड्थ+स्पेस)//प्लस बराबर नहीं
 – 
Petar Ivanov
17 जुलाई 2011, 00:59
हाय पेटार, "प्लस बराबर नहीं" से आपका क्या मतलब है? आप किस भाषा का उपयोग कर रहे हैं? मैं समझता हूं == का मतलब बराबर नहीं है, मैंने startPosition= -120 का उपयोग करके आपके उदाहरण फ़ंक्शन (== सामान के बिना, मुझे नहीं पता कि वह क्या है) का परीक्षण किया और सब कुछ बाईं ओर के बजाय 0 के दाईं ओर निकला, हालांकि सही जगह पर है, इसलिए मैंने फंक्शन कॉल के सामने एक माइनस अटका दिया और यह सही तरीके से निकला।
 – 
alphablender
17 जुलाई 2011, 01:15