खोज…


टिप्पणियों

SKScene स्प्राइटिट एप्लिकेशन में एक एकल दृश्य का प्रतिनिधित्व करता है। एक SKScene एक में 'प्रस्तुत' है SKView । वास्तविक स्प्राइट्स को लागू करने के लिए SKSpriteNodes को दृश्य में जोड़ा जाता है।

सरल अनुप्रयोगों में एक एकल SKScene हो सकता है जिसमें सभी SpriteKit सामग्री होती है। अधिक जटिल ऐप्स में कई SKScenes हो सकते हैं जो अलग-अलग समय पर प्रस्तुत किए जाते हैं (उदाहरण के लिए खेल विकल्प पेश करने के लिए एक प्रारंभिक दृश्य, खेल को लागू करने के लिए एक दूसरा दृश्य और 'गेम ओवर' परिणाम पेश करने के लिए एक तीसरा दृश्य)।

प्राथमिक स्प्रिटकिट कार्यशीलता को लागू करने के लिए SKScene को उपवर्गित करना

स्प्राइटकिट कार्यक्षमता को SKScene के एक उपवर्ग में लागू किया जा सकता है। उदाहरण के लिए, कोई गेम SKScene उपवर्ग में GameScene नामक मुख्य गेम कार्यक्षमता को लागू कर सकता है।

स्विफ्ट में :

import SpriteKit

class GameScene: SKScene {

    override func didMoveToView(view: SKView) {
        /* Code here to setup the scene when it is first shown. E.g. add sprites. */
    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        for touch in touches {
            let location = touch.locationInNode(self)
            /* Code here to respond to a user touch in the scene at location */
        }
    }

    override func update(currentTime: CFTimeInterval) {
        /* Code here to perform operations before each frame is updated */
    }
}

माध्यमिक कार्यक्षमता तब SKSpriteNodes के उपवर्गों में लागू की जा सकती है जो दृश्य के भीतर उपयोग किए जाते हैं (देखें उप-वर्ग SKNpriteNode )।

एक SKScene बनाएँ जो SKView को भरता है

एक साधारण उपयोग के मामले में एक SKScene बनाने के लिए जो बिल्कुल SKView को भरता है। यह दृश्य के एक हिस्से को दिखाने के लिए कैमरे को फिट या सेट करने के लिए दृश्य को स्केल करने पर विचार करने की आवश्यकता से बचा जाता है।

निम्न कोड मानता है कि स्केव्यू नामक SKView पहले से मौजूद है (उदाहरण के लिए इंटरफ़ेस बिल्डर का उपयोग करके एक पूर्ण स्क्रीन SKView बनाएँ ) और गेम व्यू नामक SKScene के एक उपवर्ग को परिभाषित किया गया है:

स्विफ्ट में :

let sceneSize = CGSizeMake(skView.frame.width, skView.frame.height)
let scene = SKScene(size: sceneSize)

skView.presentScene(scene)

हालाँकि यदि SKView आकार बदल सकता है (जैसे यदि उपयोगकर्ता अपने डिवाइस को घुमाता है और इसके कारण इसकी बाधाओं के कारण दृश्य खिंचा जाता है) तो SKScEN अब SKView को फिट नहीं करेगा। आप SKScene का आकार बदलकर हर बार SKScize का आकार बदलकर इसे प्रबंधित कर सकते हैं (जैसे कि didchangeSize विधि में)।

एक SKScene बनाएं जो SKView को फिट करने के लिए स्केल करता है

एक SKScene में एक स्केलमॉड पैरामीटर है जो परिभाषित करता है कि कैसे वह SKView के भीतर फिट होने के लिए अपने आकार को बदलेगा यदि वह SKView में प्रस्तुत किया गया है यदि यह समान आकार और / या आकार नहीं है।

स्केल के लिए चार विकल्प हैं:

  • एस्पेक्टफिट : दृश्य को बढ़ाया जाता है (लेकिन बढ़ाया नहीं जाता) जब तक वह दृश्य के भीतर फिट नहीं होता। यह सुनिश्चित करता है कि दृश्य विकृत नहीं है, लेकिन दृश्य के कुछ क्षेत्र हो सकते हैं जो दृश्य द्वारा कवर नहीं किए गए हैं यदि दृश्य के समान आकार नहीं है।
  • पहलू : दृश्य को पूरी तरह से भरने के लिए दृश्य को बढ़ाया जाता है (लेकिन फैला नहीं)। यह सुनिश्चित करता है कि दृश्य विकृत नहीं है और यह दृश्य पूरी तरह से भरा हुआ है लेकिन दृश्य के कुछ हिस्सों को क्रॉप किया जा सकता है यदि दृश्य दृश्य के समान आकार का नहीं है।
  • भरण : दृश्य को पूरी तरह से भरने के लिए दृश्य को बढ़ाया जाता है (और यदि आवश्यक हो तो)। यह सुनिश्चित करता है कि दृश्य पूरी तरह से भरा हुआ है और आपके किसी भी दृश्य को क्रॉप नहीं किया गया है लेकिन दृश्य विकृत हो जाएगा यदि दृश्य दृश्य के समान आकार का नहीं है।
  • ResizeFill : दृश्य को बिल्कुल नहीं बढ़ाया गया है, बल्कि दृश्य के आकार को फिट करने के लिए इसका आकार बदल दिया गया है।

निम्न कोड मानता है कि स्केव्यू नामक SKView पहले से मौजूद है (जैसे कि इंटरफ़ेस बिल्डर का उपयोग करके एक पूर्ण स्क्रीन SKView बनाएँ ) और गेम व्यू नामक SKScene के एक उपवर्ग को परिभाषित किया गया है और फिर AspectFill scaleMode का उपयोग करता है:

स्विफ्ट 3 में :

    let sceneSize = CGSize(width:1000, height:1000)
    let scene = GameScene(size: sceneSize)
    scene.scaleMode = .aspectFill

    skView.presentScene(scene)

SKCameraNode (iOS 9 और बाद में) के साथ एक SKScene बनाएं

आप दृश्य में किस भाग को SKView में दिखाया गया है, यह परिभाषित करने के लिए आप एक SKCameraNode को SKScene में रख सकते हैं। SKScene को 2 डी दुनिया के रूप में सोचें, जिसके ऊपर एक कैमरा तैर रहा है: SKView यह दिखाएगा कि कैमरा 'क्या देखता है'।

एक स्क्रॉल गेम की कार्रवाई का पालन करने के लिए कैमरे को मुख्य चरित्र के स्प्राइट से जोड़ा जा सकता है।

SKCameraNode में चार पैरामीटर होते हैं जो परिभाषित करते हैं कि दृश्य के किस भाग को दिखाया गया है:

  • स्थिति : यह दृश्य में कैमरे की स्थिति है। इस स्थिति को SKView के बीच में रखने के लिए दृश्य प्रस्तुत किया गया है।
  • xScale और yScale : ये परिभाषित करते हैं कि दृश्य में दृश्य को कैसे ज़ूम किया जाता है। दृश्य को विकृत करने से बचने के लिए इन दोनों मूल्यों को समान रखें। 1 के मान का अर्थ है कोई ज़ूम नहीं, एक से कम का मान ज़ूम में आएगा (स्प्राइट्स बड़े दिखाई देंगे) और 1 से ऊपर के मान ज़ूम आउट होंगे (स्प्राइट्स छोटे दिखाई देंगे)।
  • zRotation : यह परिभाषित करता है कि दृश्य में दृश्य को कैसे घुमाया जाता है। शून्य का मान रोटेशन नहीं होगा। मान रेडियन में है, इसलिए पाई (3.14 ...) का मान दृश्य को उल्टा घुमाएगा।

निम्न कोड मानता है कि स्केव्यू नामक SKView पहले से मौजूद है (जैसे कि इंटरफ़ेस बिल्डर का उपयोग करके एक पूर्ण स्क्रीन SKView बनाएँ ) और गेम व्यू नामक SKScene के एक उपवर्ग को परिभाषित किया गया है। यह उदाहरण सिर्फ कैमरे की प्रारंभिक स्थिति निर्धारित करता है, आपको अपने दृश्य को स्क्रॉल करने के लिए कैमरा (उसी तरह जैसे आप अन्य SKSpriteNodes दृश्य में) स्थानांतरित करने की आवश्यकता होगी:

स्विफ्ट 3 में :

    let sceneSize = CGSize(width:1000, height:1000)
    let scene = GameScene(size: sceneSize)
    scene.scaleMode = .aspectFill

    let camera = SKCameraNode()
    camera.position = CGPointM(x:500, y:500)
    camera.xScale = 1
    camera.yScale = 1
    camera.zRotation = 3.14
    scene.addChild(camera)
    scene.camera = camera

    skView.presentScene(scene)


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow