我试图找出我的 Sprite 的中心,我使用了一个足球 Sprite,将大小更改为 120 x 120。 我设法获得了触摸位置。
获得中心的方法应该是 sprite.origin.x + (sprite.width/2),但由于某些原因,我得到的值是没有意义的。因为无论我在哪里触摸球,触摸 location.x 总是小于 Sprite 中心,即使例如我触摸了球的右侧,所以 location.x 应该 > sprite.center。 x.
这是获取球中心点的小代码
let ballCenter = CGVectorMake(ball.position.x + (ball.frame.width / 2),
ball.position.y + (ball.frame.height / 2))
但是当我像这样打印结果时,总是会转到“真实”的情况。
if location.x < ballCenter.dx {
print("touched on left of ball ", location.x, location.y)
}else{
print("touched on right of ball ", location.x, location.y)
}
这让我发疯,谁能帮助我理解这一点? Sprite 原点不是在左下角吗?
还有,为什么场景框这么小?当我使用 iPhone 6S 时,我看到我的屏幕宽度是 375.0,屏幕高度是 667.0,它不应该更大吗?这太令人困惑了。
提前致谢。
最佳答案
默认情况下,SpriteNode 的原点位于 Sprite 的中心。如果你想获得节点的中心,只需使用 let ballCenter = sprite.position
- 这将为你提供一个 CGPoint 来使用。然后,您可以使用 ballCenter.x
和 ballCenter.y
访问 x 和 y 坐标。
此外,如果您想要像目前使用 ballCenter
那样创建一个点,请使用 CGPointMake()
而不是 CGVectorMake()
.
关于ios - 我如何在 Swift 2 中获得 SKSpriteNode 的真正中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38016294/