我正在尝试使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/