我正在尝试制作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)
如果有人可以帮助我,我将非常高兴。
答案 0 :(得分:1)
节点的position
位于其父级的几何中,因此您需要将enemy.position
的几何enemy.parent
转换为{{1}的几何}。
player.parent