如何在Swift 2中获得SKSpriteNode的真正中心?

时间:2016-06-24 14:52:42

标签: ios swift sprite-kit

我试图找出我的精灵的中心,我使用了一个足球精灵,将尺寸改为120乘120。 我设法获得了触摸位置。

获得中心的方法应该是sprite.origin.x +(sprite.width / 2),但由于某种原因,我得到的值是没有意义的。因为无论我在哪里接触球,触摸位置x总是小于精灵中心,即使例如我触摸球的右侧,因此location.x应该是>比sprite.center.x。

这是获得球的中心点的小代码

let ballCenter = CGVectorMake(ball.position.x + (ball.frame.width / 2),
                              ball.position.y + (ball.frame.height / 2))

但是当我打印出这样的结果时,总是会去" true"情况下。

 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)   
 }

这让我发疯,任何人都可以帮我理解这个吗?精灵起源不在左下角?

另外,为什么场景帧太小了?我看到我的屏幕宽度为375.0,屏幕高度为667.0,当我使用iPhone 6S时,它不应该更大吗?这太令人困惑了。

提前致谢。

1 个答案:

答案 0 :(得分:5)

默认情况下,SpriteNode的原点位于精灵的中心。如果你想获得节点的中心,只需使用let ballCenter = sprite.position - 这将为你提供一个CGPoint。然后,您可以使用ballCenter.xballCenter.y来访问x和y坐标。

此外,如果您想要创建与ballCenter目前相关的点,请使用CGPointMake()代替CGVectorMake()