如何防止孩子与父母交往

时间:2020-04-24 16:39:55

标签: swift xcode sprite-kit

我正在创建一个从枪管中发射子弹的功能。我将子弹留为枪支的孩子,以便将其放置在正确的位置,而不管玩家面对的是什么。但是,如果我在玩家移动时射击,子弹就会相对于玩家移动。子弹生成后如何删除相对引用。

func creatBullet() {

    let bullet = SKSpriteNode(imageNamed: "bullet")
    bullet.zPosition = 4
    bullet.position = CGPoint(x: gun.position.x-1, y: gun.position.y-20)

    //add physics
    gun.addChild(bullet)

    let xDirection = CGFloat(bullet.position.x)
    let yDirection = CGFloat(bullet.position.y + 150)

    let bulletMove = SKAction.moveBy(x: xDirection, y: yDirection, duration: 2)
    let sequence = SKAction.sequence([bulletMove, SKAction.removeFromParent()])
    bullet.run(sequence)
}

1 个答案:

答案 0 :(得分:0)

来自Apple ...

将此节点的坐标系中的点转换为坐标 节点树中另一个节点的系统。声明

func convert(_ point: CGPoint, to node: SKNode) -> CGPoint

参数

point此节点坐标系中的一个点。

node与该节点在同一节点树中的另一个节点。

返回相同点转换为另一个节点的坐标 系统。

所以我只用(假设自我是场景)

let pos = convert(gun.position, to self)
bullet.position = pos
addChild(bullet)

编辑

如果您的对象是另一个对象的子代,则可能必须使用convert from和convert to来获取绝对部分

pos = convert(convert(gun.position, from: gun.parent!), to: self)