Swift 使用convert(:to:)或convert(:from:)转换节点';s位置到另一个';s
我试图做出一个动作,这样我的玩家就会慢慢地被拉向一个要杀死他的敌人。实际上,问题在于玩家和敌人处于不同的节点,遵循以下层次结构: 场景(SKScene)-父节点->播放器(SKNode) 场景(SKScene)-父节点->敌人节点(SKNode)-父节点->敌人节点(SKNode) 所以我要做的是把敌人的位置转换成场景的坐标系,然后把这个位置转换成玩家的坐标系Swift 使用convert(:to:)或convert(:from:)转换节点';s位置到另一个';s,swift,sprite-kit,Swift,Sprite Kit,我试图做出一个动作,这样我的玩家就会慢慢地被拉向一个要杀死他的敌人。实际上,问题在于玩家和敌人处于不同的节点,遵循以下层次结构: 场景(SKScene)-父节点->播放器(SKNode) 场景(SKScene)-父节点->敌人节点(SKNode)-父节点->敌人节点(SKNode) 所以我要做的是把敌人的位置转换成场景的坐标系,然后把这个位置转换成玩家的坐标系 let enemyToScene = enemy.node?.convert(other.enemy!.position, to: se
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.970458984375339.2470703125)
以及转换后敌人的位置:
烯粘菌苯:可选(-2880.0,-192.0))
场景播放器:(-2038.263427734375,-27.4952392578125)
如果有人能帮助我,我将非常高兴。节点的
位置
位于其父节点的几何体中,因此您需要将敌方.position
从敌方.parent
的几何体转换为玩家.parent
的几何体
if
let enemyNode = enemy.node,
let enemyParent = enemy.parent,
case let playerNode = player.position,
let playerParent = playerNode.parent
{
let targetPosition = enemyParent.convert(enemyNode.position, to: playerParent)
playerNode.run(SKAction.move(to: targetPosition, duration: 2)
}
事实上,问题在于我实例化我的播放器的方式,但是谢谢!