我正在尝试制作一个 SKAction,以便我的玩家慢慢地被拉向一个要杀死他的敌人。实际上,问题在于玩家和敌人处于不同的节点,遵循以下层次结构:
场景(SKScene)-PARENT->播放器(SKNode)
场景(SKScene)-PARENT->敌人节点(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)
如果有人能帮助我,我会很高兴。
一个节点的chức vụ
在它的parent's几何中,所以你需要从enemy的几何中转换enemy.position
。 parent
đến player.parent
的几何体。
nếu như
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)
}
Tôi là một lập trình viên xuất sắc, rất giỏi!