如何在 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.xballCenter.y 访问 x 和 y 坐标。

此外,如果您想创建一个点,就像您目前使用 ballCenter 所做的那样,请使用 CGPointMake() 而不是 CGVectorMake()

【讨论】:

你能帮我实现这个吗? ***.com/questions/37998343/… 快把我逼疯了哈哈 已经尝试了很多东西,但我仍然想不出一个好的方法

以上是关于如何在 Swift 2 中获得 SKSpriteNode 的真正中心?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得 Swift 枚举的计数?

如何在 Swift 中获得 Bool 的相反值?

如何在 swift 中使用 HealthKit 获得步行和跑步距离

如何在 Swift 语言中获得一些整数的力量?

如何在 swift4 中获得蓝牙外设的特征值?

如何获得顺序 MKDirection 请求响应 Swift