gpt4 book ai didi

swift - 使用转换(_ :to:) or convert(_:from:) to convert a node's position to another's

转载 作者:行者123 更新时间:2023-11-28 05:41:23 27 4
gpt4 key购买 nike

我正在尝试制作一个 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)

如果有人能帮助我,我会很高兴。

最佳答案

一个节点的position在它的parent's几何中,所以你需要从enemy的几何中转换enemy.position。 parentplayer.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)
}

关于swift - 使用转换(_ :to:) or convert(_:from:) to convert a node's position to another's,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56602259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com