如何在 Swift 2 中获得 SKSpriteNode 的真正中心?
Posted
技术标签:
【中文标题】如何在 Swift 2 中获得 SKSpriteNode 的真正中心?【英文标题】:How do i get the real center of a SKSpriteNode in Swift 2? 【发布时间】:2016-06-24 14:52:41 【问题描述】:我试图找出我的 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)
这让我发疯,任何人都可以帮助我理解这一点吗?精灵原点不在左下角?
还有,为什么场景框这么小?当我使用 iPhone 6S 时,我看到我的屏幕宽度为 375.0,屏幕高度为 667.0,不应该更大吗?这太令人困惑了。
提前致谢。
【问题讨论】:
【参考方案1】:默认情况下,SpriteNode 的原点位于精灵的中心。如果您想获得节点的中心,只需使用let ballCenter = sprite.position
- 这将为您提供一个 CGPoint 可以使用。然后,您可以使用 ballCenter.x
和 ballCenter.y
访问 x 和 y 坐标。
此外,如果您想创建一个点,就像您目前使用 ballCenter
所做的那样,请使用 CGPointMake()
而不是 CGVectorMake()
。
【讨论】:
你能帮我实现这个吗? ***.com/questions/37998343/… 快把我逼疯了哈哈 已经尝试了很多东西,但我仍然想不出一个好的方法以上是关于如何在 Swift 2 中获得 SKSpriteNode 的真正中心?的主要内容,如果未能解决你的问题,请参考以下文章