2012-03-13 6 views
14

मैं सीओसीओएस 2 डी फ्रेमवर्क और ऑब्जेक्टिव-सी (लैंडस्केप मोड/व्यू) में एक आईफोन गेम विकसित कर रहा हूं।परतों के बीच कोई सह-समन्वय नहीं, जबकि विभिन्न गति के साथ बाकग्राउंड मूव

खेल के लिए, मैं एक पृष्ठभूमि का उपयोग कर रहा हूं जिसमें चार परतें हैं (आकाश पर 'आकाश', आकाश से नीचे 'पहाड़', माउंटेन के नीचे 'हिल' और नीचे 'अग्रभूमि')। यहां मुझे पृष्ठभूमि की प्रत्येक परत को एक अलग गति के साथ स्थानांतरित करने की आवश्यकता है जैसे कि 'स्काई' को माउंटेन से धीमी गति से ले जाना चाहिए, 'माउंटेन' हिल से धीमी गति से आगे बढ़ना चाहिए और 'हिल' को अग्रभूमि की तुलना में धीमी गति से आगे बढ़ना चाहिए।

जबकि मैं प्रत्येक परत को एक अलग गति से आगे बढ़ा रहा हूं, गेम लेयर के सीओ-ऑर्डर के साथ एक BREAK-UP अनुभव करता है।

मैंने तर्क के साथ इसे हल करने का प्रयास किया: इसकी गति के अनुसार छवि/परत (चौड़ाई) आकार बढ़ाना ताकि प्रत्येक परत समाप्त हो और समन्वय के साथ फिर से चलना शुरू हो। इसे काम करने के लिए नहीं मिल सका।

-(void) backgroundmoving 
{ 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    //return kDevice_iPad; 

    // Code for Each Layer's Moving Speed FOR iPad 
    bk_f -=1.0; 
    bk_f1 -=1.4; 
    bk_f2 -=1.8; 
    bk_f3 -=2.2; 
} else { 

    // Code for Each Layer's Moving Speed FOR iPhone 
    bk_f -=0.2; 
    bk_f1 -=0.4; 
    bk_f2 -=0.6; 
    bk_f3 -=0.8; 

} 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 

    //return kDevice_iPad; 
    if (bk_f <= -920*1.1) {bk_f=0;} 
    if (bk_f1 <= -920*1.1) {bk_f1=0;} 
    if (bk_f2 <= -920*1.1) {bk_f2=0;} 
    if (bk_f3 <= -920*1.1) {bk_f3=0;} 
    if (bk_f4 <= +920*1.1) {bk_f4=0;} 
    } else { 
    if (bk_f <= -480*2) {bk_f=0;} 
    if (bk_f1 <= -480*2) {bk_f1=0;} 
    if (bk_f2 <= -480*2) {bk_f2=0;} 
    if (bk_f3 <= -480*2) {bk_f3=0;} 
    if (bk_f4 <= +480*2) {bk_f4=0;} 


} 

_level_bkgrnd.position = ccp(bk_f, 0); 
_level_bkgrnd1.position = ccp(bk_f1, 0); 
_level_bkgrnd2.position = ccp(bk_f2, 0); 
_level_bkgrnd3.position = ccp(bk_f3, 0); 

} 

कोड से ऊपर मुझे पृष्ठभूमि मुद्दा देता है:

इस पृष्ठभूमि में ले जाने के लिए अपने कोड है। संदर्भ के लिए स्क्रीनशॉट लिंक प्रदान कर रहा हूँ:

1) http://screencast.com/t/seUjXClz

2) http://screencast.com/t/8tHq2KYnnMa

मुझे सही दिशा में इशारा करते हुए किसी भी मदद की बहुत सराहना की जाएगी।

अग्रिम धन्यवाद :)

+0

हाय दोस्तों, कृपया मेरी क्वेरी पर एक नज़र डालें। मैं अभी भी इंतजार कर रहा हूँ। अभी तक कोई समाधान नहीं मिला है। कृपया मेरी मदद करें @ALL – NSExpression

+0

मुझे लगता है कि आपको अधिक सटीक उत्तर प्रदान करने के लिए हमें कुछ आवश्यक जानकारी याद आ रही है। आपकी परतें क्या आकार हैं? अंत में स्क्रॉल करते समय आप उन्हें कैसे लूप कर रहे हैं? – BobbyScon

उत्तर

1

Cocos2d इस के लिए समर्थन में बनाया गया है, लंबन स्क्रॉल के साथ कुछ उदाहरण कोड चेकआउट। http://www.cocos2d-iphone.org/archives/22

+0

मुझे आपके द्वारा प्रदान किए गए लिंक से समझ में नहीं आया। मेरे पास पृष्ठभूमि चलने का कोड है, कोड की उन पंक्तियों के साथ एकमात्र समस्या दोहराने के दौरान पृष्ठभूमि झटके/उतार चढ़ाव है। कृपया मेरी पूर्ण क्वेरी पढ़ें जो मैंने सूचीबद्ध की है और स्क्रीनशॉट भी देखें ताकि आप मेरी समस्या को समझ सकें। धन्यवाद – NSExpression

0

आपके प्रश्न और स्क्रीनशॉट के आधार पर, मैं आपकी समस्या का अर्थ यह बता रहा हूं कि आपको अपनी परतों को लूप को सहजता से प्राप्त करने में समस्याएं आ रही हैं। अमेल्ज़क आपको लंबन स्क्रॉलिंग की ओर इशारा करते हुए सही था। यही वह है जिसे आप यहां पूरा करने की कोशिश कर रहे हैं और ऐसा लगता है कि शायद आपका दृष्टिकोण बंद है। मुझे लगता है कि परतों के समन्वय के बीच ब्रेक-अप द्वारा आपके मतलब का अर्थ समझने में कोई समस्या है। एक समय में 1 परत पर काम करें। लूप को निर्बाध रूप से अपना अग्रभूमि प्राप्त करें, फिर अपनी अगली परत प्राप्त करें, और आगे आगे बढ़ें। आपकी परतें एक ही समय में दोहराएंगी क्योंकि वे अलग-अलग गति से आगे बढ़ रहे हैं और अलग-अलग समय पर अपने अंतिम बिंदु तक पहुंच जाएंगे। आपके स्क्रीनशॉट से, ऐसा प्रतीत होता है कि तेज़ी से चलने वाली परतें लूप नहीं होतीं जब तक आपकी धीमी गति से चलने वाली परत इसकी लूप शुरू नहीं करती। मुझे पता है कि आपने परत चौड़ाई को क्षतिपूर्ति के साथ बदलने के लिए इसका मुकाबला करने की कोशिश की, लेकिन यह स्वतंत्र रूप से प्रत्येक परत के बारे में चिंता करने के लिए क्लीनर, आसान और बेहतर होगा। लेकिन यह महज मेरी राय है।

तो तुम्हारी समस्या क्या है आपके फंस परतों स्प्राइट या मामूली घबराना के बीच एक रेखा है, तो एक त्वरित समाधान है कि मुझे घबराहट के लिए मदद की/looped स्प्राइट के बीच चमक init बयान के CCDirectorProjection2D जोड़ने था:

-(id) init 
{ 
    if((self=[super init])) 
    { 
     [[CCDirector sharedDirector] setProjection:CCDirectorProjection2D]; 
संबंधित मुद्दे