节点不移动

时间:2016-11-08 22:35:41

标签: ios swift sprite-kit skspritenode

我正在尝试在屏幕上抛出一个节点,我已经采用了以下代码,但实际上并没有发生任何事情。

当场景加载节点在屏幕中间产生时,然后下降到底部。

代码是从网站的其他地方获取的,并且授予它有点旧,所以我假设我错过了什么?

var sprite: SKSpriteNode!
var touchPoint: CGPoint = CGPoint()
var touching: Bool = false

override func didMove(to view: SKView) {
    self.physicsBody = SKPhysicsBody(edgeLoopFrom: self.frame)
    sprite = SKSpriteNode(color: UIColor.red, size: CGSize(width: 50, height: 50))
    sprite.physicsBody = SKPhysicsBody(rectangleOf: sprite.size)
    sprite.position = CGPoint(x: 50.0, y: 50.0)
    self.addChild(sprite)
}

 func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    for touch: AnyObject in touches {

        let location = touch.location(in: self)
        if sprite.frame.contains(location) {
            touchPoint = location
            touching = true
        }
    }
}

 func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
    for touch: AnyObject in touches {
        let location = touch.location(in: self)
        touchPoint = location
    }
}

 func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
    touching = false
}

 func touchesCancelled(touches: Set<NSObject>!, withEvent event: UIEvent!) {
    touching = false
}

func update(currentTime: TimeInterval) {
    if touching {
        let dt:CGFloat = 1.0/60.0
        let distance = CGVector(dx: touchPoint.x-sprite.position.x, dy: touchPoint.y-sprite.position.y)
        let velocity = CGVector(dx: distance.dx/dt, dy: distance.dy/dt)
        sprite.physicsBody!.velocity = velocity
    }
}

}

0 个答案:

没有答案