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

msq*_*qar 3 ios sprite-kit swift

我正在试图找出我的精灵的中心,我使用了一个足球精灵,改变了120到120的大小.我设法获得触摸位置.

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

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

let ballCenter = CGVectorMake(ball.position.x + (ball.frame.width / 2),
                              ball.position.y + (ball.frame.height / 2))
Run Code Online (Sandbox Code Playgroud)

但是当我打印出这样的结果时,总是会出现"真实"的情况.

 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)   
 }
Run Code Online (Sandbox Code Playgroud)

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

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

提前致谢.

cla*_*pps 5

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

此外,如果您想创建一个像您目前正在使用的点ballCenter,请使用CGPointMake()而不是CGVectorMake().