使用convert(_:to :)或convert(_:from :)将节点的位置转换为另一个节点的位置

时间:2019-06-14 16:44:00

标签: swift sprite-kit

我正在尝试制作SKAction,以便我的玩家慢慢向要杀死他的敌人靠近。实际上,问题在于,玩家和敌人位于以下层次结构的不同节点中:

场景(SKScene)-PARENT->播放器(SKNode)

场景(SKScene)-PARENT-> EnemiesNode(SKNode)-PARENT->敌人(SKNode)

所以我要做的是将敌人的位置转换为场景的坐标系,然后将此位置转换为玩家的坐标系。

let enemyToScene = enemy.node?.convert(other.enemy!.position, to: self)
let sceneToPlayer = self.convert(enemyToScene!, to: self.player.position)
self.player.position.run(SKAction.move(to: enemyToPlayer!, duration: 2.0))

执行此代码时,发生的事情是我的播放器转到了一个完全不同的位置,但是,我注意到他总是转到相同的位置,所以我猜转换是有效的,但不能预期的。

这些是转换之前的位置:

敌方位置:可选((-1440.0,-96.0))

玩家位置:(347.970458984375,339.2470703125)

转换后的敌人位置:

EnemyToScene:可选((-2880.0,-192.0))

SceneToPlayer:(-2038.263427734375,-27.4952392578125)

如果有人可以帮助我,我将非常高兴。

1 个答案:

答案 0 :(得分:1)

节点的position位于其父级的几何中,因此您需要将enemy.position的几何enemy.parent转换为{{1}的几何}。

player.parent