2013-09-30 13 views
9

अपने दृश्य पर "ज़ूम आउट" करने का सही तरीका क्या है।स्प्राइटकिट - स्केल और भौतिकी सेट करें

मेरे पास एक वस्तु है कि मैं इसे स्क्रीन पर आग लगाने के लिए एक आवेग लागू करता हूं। उदाहरण के लिए यह लगभग 100 पीएक्स आग लग जाएगा। यह अपेक्षाकृत काम करता है - जिस बल में वह उड़ता है, उसमें वृद्धि करें, घनत्व को कम करें।

मेरी समस्या ज़ूम कर रही है, एकमात्र तरीका जिसे मैं ज़ूम आउट करना जानता हूं एक दृश्य पर स्केल सेट करना है, और मेरे सभी नोड्स को अपेक्षित रूप से कम करता है।

लेकिन फिर उसी वस्तु को उड़ाने वाली वस्तु के बजाय (बस ज़ूम आउट) यह दूरी से दोगुनी से अधिक उड़ता है।

जब मैं स्केल करने से पहले और बाद में ऑब्जेक्ट के द्रव्यमान/घनत्व इत्यादि को लॉग करता हूं तो वे अपेक्षाकृत समान होते हैं।

तो यह एक ही राशि क्यों नहीं उड़ता है? पैमाने से मेल खाने के लिए आवेग को बदलने का प्रयास किया, लेकिन यह काम नहीं करता है, हाँ यह कम दूरी उड़ता है - लेकिन यह स्केलिंग के साथ एक के लिए नहीं है।

ट्रिकी प्रश्न ...

विचारों के लिए धन्यवाद।

उत्तर

10

आसान ठीक (क्रिस LaPollo करने के लिए धन्यवाद, RW पर एक लेखक)

[self runAction:[SKAction scaleTo:0.5 duration:0]]; 

और कुछ नहीं की जरूरत है।

अजीब बात आप

[self setScale:0.5]; 

ऐसा नहीं कर सकते तो आप इस चेतावनी मिलती है के रूप में है, और यह काम doenst - लेकिन एक कार्रवाई चल करता है - अजीब !!!

एसकेएससीन: एसकेसीसीन के पैमाने को स्थापित करने का कोई प्रभाव नहीं पड़ता है।

+2

आप नहीं कर सकते [स्वयं सेट स्केल: 0.5]; क्योंकि आपको दृश्य को स्केल नहीं करना चाहिए। नीचे मेरा जवाब देखें। – JKallio

+2

अब और नहीं कर सकता: "एसकेएससीन: एसकेसीसीन के पैमाने को एनिमेट करने से कोई प्रभाव नहीं पड़ता है।" – edo42

10

मेरा मानना ​​है कि आप SKScene पैमाने पर करने (जैसे कि यह आप संकेत अगर आप SKScene साथ setScale विधि का प्रयास) नहीं करना पड़ेगा। इसके बजाय का आकार बदलने का प्रयास करें।

myScene.scaleMode = SKSceneScaleModeAspectFill; 

और फिर जूमिंग जबकि:

myScene.size = CGSizeMake(myScene.size.width + dx, myScene.size.height + dy); 

* Apple documentation का कहना है:

SKSceneScaleModeResizeFill को scaleMode संपत्ति सेट करें। स्प्राइट किट स्वचालित रूप से दृश्य का आकार बदलती है ताकि यह हमेशा दृश्य के आकार से मेल खाती हो।

1

मेरे जैसे लोगों के लिए जो खोज के बाद यहां समाप्त हुए, ज़ूम आउट करने के लिए दृश्य के पैमाने को बदलने के लिए अब काम नहीं करता है। इसके बजाय, एक खाली SKNode में अपने सभी नोड्स संपुटित और इस पर कार्रवाई चलाएँ:

self.rootNode = [SKNode node]; 
// Add your children nodes here to the rootnode. 
[self addChild:self.rootNode]; 
// Zoom out 
[self.rootNode runAction:[SKAction scaleBy:2 duration:5]]; 
// Zoom in 
[self.rootNode runAction:[SKAction scaleBy:.5 duration:5]]; 

स्वयं SKScene है। मुझे उम्मीद है कि यह मदद करता है।

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