作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个 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/
我是一名优秀的程序员,十分优秀!