我正在尝试使SKSpriteNode来自SKShapeNode。当以下代码运行时,将显示弹丸,但它们将来自屏幕上的其他点,而不是玩家所在的位置。
这是我的播放器类中的射击功能。

func shoot() {

            let newProjectile = Projectile()
            newProjectile.position = self.position

           self.addChild(newProjectile)
            let action = SKAction.moveTo(CGPointMake(
                600 * -cos(newProjectile.zRotation - 1.57079633) + newProjectile.position.x,
                600 * -sin(newProjectile.zRotation - 1.57079633) + newProjectile.position.y
            ), duration: 2.0)

            let actionMoveDone = SKAction.removeFromParent()
            newProjectile.runAction(SKAction.sequence([action, actionMoveDone]))
            }


这是我的弹道课:

    class Projectile : SKSpriteNode {

        let Texture = SKTexture(imageNamed: "image.png")

        static var counter : Int = 0

        init(){
            //super.init()
            super.init(texture: Texture, color: UIColor.whiteColor(), size: CGSize(width: radius * 2, height: radius * 2))
            self.name   = "projectile-" + NSUUID().UUIDString
            self.physicsBody = SKPhysicsBody(circleOfRadius: radius)
            self.physicsBody?.categoryBitMask = GlobalConstants.Category.projectile
            self.physicsBody?.collisionBitMask = GlobalConstants.Category.projectile
            self.physicsBody?.contactTestBitMask = GlobalConstants.Category.projectile | GlobalConstants.Category.wall
            self.zPosition = GlobalConstants.ZPosition.projectile
}
}

最佳答案

您可能需要将弹丸添加到场景中,而不是将播放器本身添加到场景中。您正在将弹丸添加到您的播放器中。

您应该将投射物添加到父级场景中。这样的事情。

self.scene!.addChild(newProjectile)

关于ios - 弹丸不是来自正确的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37191789/

10-08 20:38