Swift 4:SKSpriteNode不会停在

时间:2017-12-17 15:22:42

标签: swift sprite-kit

这里我有一个带子弹的坦克,当用户点击屏幕时,坦克开火,很好

但当子弹从水箱中出来时,它会越过屏幕而不会停在触摸位置

这是我的代码:

for touch in touches {
        let location = touch.location(in: self)

        let bullet = SKSpriteNode(imageNamed: "bullet4")

        bullet.position = CGPoint(x: self.MainTank.position.x, y: self.MainTank.position.y + 10)

        bullet.size = CGSize(width: 12, height: 20)

        bullet.physicsBody = SKPhysicsBody(circleOfRadius: bullet.size.width / 2)

        bullet.physicsBody?.affectedByGravity = false
        bullet.physicsBody?.isDynamic = true // false stops the bullet on the tank
        bullet.physicsBody?.allowsRotation = false
        self.addChild(bullet)

        var dx = CGFloat(location.x)
        var dy = CGFloat(location.y)

        let magnitude = sqrt(dx * dx + dy * dy)

        dx /= magnitude
        dy /= magnitude

        let vector  = CGVector(dx: 5.0 * dx, dy: 5.0 * dy)

        bullet.physicsBody?.applyImpulse(vector)


}

我试图将isDynamic设置为true,但这会使子弹停在坦克位置

由于

1 个答案:

答案 0 :(得分:0)

它可能会移动到屏幕之外,因为您将向量乘以5.0。我也不会像那样创建你的矢量,因为没有必要的分量部分。试试这个:

usleep