CGRect SKSpriteNode和游戏坐标

时间:2018-01-09 17:27:55

标签: swift coordinates sprite skspritenode

我正在使用精灵套件设置游戏。

我想确保一个名为background(skspritenode size 2000 x 2000)的可拖动节点在屏幕上保持可见而不显示边缘。

因此,如果屏幕由一个名为screenRect的CGRect表示,并且背景由另一个名为backgroundRect的CGRect表示,我可以测试屏幕是否在背景中。

我正在使用以下代码来测试它。 它正在按预期工作,除了试图确保我的坐标为背景sknode,CGRect,游戏和iOS的原点是允许的。

我认为我差点就在那里,但不能完全得到他们应该的矩形,所以我可以正确地测试它们是否重叠。例如screenRect应与屏幕边缘对齐。

我尝试了各种选项,将原点设置在左下角的左上角。我有时会接近,但不是正确的解决方案。

var screenRect = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)


var backgroundRect = CGRect(x: background.position.x-(background.size.width/2.0), y: background.position.y+(background.size.height/2.0), width: background.size.width*scaleNum, height: background.size.height*scaleNum)


        if backgroundRect.contains(screenRect)

        {
            print ("contained")
            print (screenRect.size)
            print (screenRect.minY)
            print (backgroundRect.size)
            print (backgroundRect.minY)
            }
        else {
            print ("uncontained")
            print (screenRect.size)
            print (screenRect.minY)
            print (backgroundRect.size)
            print (backgroundRect.minY)
}

更新 我把它解决了,我没有考虑比例因子或视网膜屏幕。 我还没有为此编写代码,但每次都要将尺寸乘以比例因子。

0 个答案:

没有答案