我试图找出我的精灵的中心,我使用了一个足球精灵,将尺寸改为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时,它不应该更大吗?这太令人困惑了。
提前致谢。
答案 0 :(得分:5)
默认情况下,SpriteNode的原点位于精灵的中心。如果你想获得节点的中心,只需使用let ballCenter = sprite.position
- 这将为你提供一个CGPoint。然后,您可以使用ballCenter.x
和ballCenter.y
来访问x和y坐标。
此外,如果您想要创建与ballCenter
目前相关的点,请使用CGPointMake()
代替CGVectorMake()
。