스위프트로 적급과 광탄급 플레이 샘플을 만들었기 때문이다.(SpriteKit)

12138 단어 XcodeSwift
적들은 광탄을 발사하지만, 나는 그것을 적급 광탄급과 분리해 보려고 한다.

SpriteKit을 사용합니다.
사용할 파일은 다음과 같습니다.
  • GameScene.swift
  • Enemy.swift
  • Bullet.swift
  • 네.Enemy 및 Bulet을 추가합니다.각각 SKSpriteNode의 하위 클래스로 반을 창설한다.
    적과 광탄은 적당한 시기에 삭제한다.만약 이렇게 하지 않는다면 적과 광탄이 대량으로 생성되는 사격 게임에서 노드의 대량 발생으로 인해 매우 무거워질 것이다.

    코드


    GameScene.swift
    
    import SpriteKit
    
    class GameScene: SKScene {
    
        override func didMoveToView(view: SKView) {
    
            // ユルい重力の設定。
            self.physicsWorld.gravity = CGVectorMake(0, -0.6)
    
        }
        override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    
            for touch: AnyObject in touches {
                let location = touch.locationInNode(self)
    
                // 敵の生成。
                let enemy = Enemy()
                enemy.setScene(self)
                self.addChild(enemy)
            }
        }
    }
    
    매우 유창하게 썼다.이전에는 적과 광탄 등급을 정하지 않았기 때문에 모두 이 파일에 적혀 있었다.\(^∆^)/
    Enemy.swift
    
    import SpriteKit
    
    class Enemy: SKSpriteNode {
    
        var gameScene: SKScene!
        func setScene(scene: SKScene) {
            self.gameScene = scene
        }
    
        // タイマーを用意。これで自動で光弾を放つようにする。
        var timer = NSTimer()
    
        init() {
            super.init(texture: nil, color: UIColor.blueColor(), size: CGSizeMake(80, 20))
    
            // 敵の設定を適当に書いておきます。
            self.position = CGPointMake(400, 500)
            self.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(80, 20))
            self.physicsBody.velocity = CGVectorMake(40, 200)
    
            // タイマーを起動します。
            self.timer = NSTimer.scheduledTimerWithTimeInterval(0.6, target: self, selector: "update", userInfo: nil, repeats: true)
        }
    
    
        func update() {
    
            if self.position.y > 400 {
    
                // 生きている間は、光弾を放つ。
                let bullet = Bullet(node: self)
                gameScene.addChild(bullet)
    
            } else {
    
                // 敵を消してタイマーも止める。
                self.removeFromParent()
                self.timer.invalidate()
            }
        }
    }
    
    광탄 레벨도 만들어요.하지만 적의 반과 거의 같다.
    Bullet.swift
    import SpriteKit
    
    class Bullet: SKSpriteNode {
    
        var timer = NSTimer()
    
        init(node: SKSpriteNode) {
            super.init(texture: nil, color: UIColor.yellowColor(), size: CGSizeMake(10, 10))
            self.position = CGPointMake(node.position.x, node.position.y + 10)
            self.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(10, 10))
            self.physicsBody.velocity = CGVectorMake(-10, 120)
            self.timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "update", userInfo: nil, repeats: true)
        }
    
        func update() {
            if self.position.y < 300 {
                self.removeFromParent()
                self.timer.invalidate()
            }
        }
    }
    
    반을 나누어 쓰면 매우 유창하게 쓸 수 있다˙∆˙)/
    전에 한 서류에 썼는데 어떻게 썼는지...
    enumerateChildNodesWithName
    사용했습니다!

    좋은 웹페이지 즐겨찾기