[Swift] 스왑 동작에 대한 샘플(SpriteKit 사용)

8175 단어 XcodeSwiftSpriteKit

게임으로 새 프로젝트를 만들고, 테크놀로지로 미리 스피릿키트를 선택한다.
환경: Xcode6-Beta4
GameScene.swift

import SpriteKit

class GameScene: SKScene {


    var square: SKSpriteNode!
    var startPos: CGPoint!
    var beganPos: CGPoint!

    override func didMoveToView(view: SKView) {

        square = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(80, 80))

        square.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))

        self.addChild(square)

        startPos = CGPointMake(
            square.position.x,
            square.position.y
        )
        println(startPos)

    }

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {

        let touch: AnyObject! = touches.anyObject()
        beganPos = touch.locationInNode(self)
        println(beganPos)
        println(square.position)
    }


    override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!) {

        var touch: AnyObject! = touches.anyObject()
        var movedPos:CGPoint = touch.locationInNode(self)


        var diffPos:CGPoint = CGPointMake(
            movedPos.x - beganPos.x,
            movedPos.y - beganPos.y)

        println(diffPos)

        square.position = CGPointMake(
            startPos.x + diffPos.x,
            startPos.y + diffPos.y
        )

    }

    override func touchesEnded(touches: NSSet!, withEvent event: UIEvent!) {

        startPos = CGPointMake(square.position.x, square.position.y)

    }



    override func update(currentTime: CFTimeInterval) {
        /* Called before each frame is rendered */
    }
}
힘이 들어가기 때문에 해설과 소스가 예쁜 작업이 뒤따른다.먼저 이동해서 올렸어요.

좋은 웹페이지 즐겨찾기