Ios 精灵套件精灵在我的if语句中未向右移动

Ios 精灵套件精灵在我的if语句中未向右移动,ios,sprite-kit,sprite,Ios,Sprite Kit,Sprite,在xcode中玩的时候,我的游戏底部有一些看起来像小方块的瓷砖。在游戏项目文件附带的更新功能中,我使所有块向左移动。但一旦其中一块瓷砖离开屏幕,我会将其重新定位到另一侧,以使其继续运行,但它会变得静止,不会移动。这是我的代码 override func update(currentTime: CFTimeInterval) { tileStone1.position = CGPoint(x: tileStone1.position.x - 4, y: tileStone1.posit

在xcode中玩的时候,我的游戏底部有一些看起来像小方块的瓷砖。在游戏项目文件附带的更新功能中,我使所有块向左移动。但一旦其中一块瓷砖离开屏幕,我会将其重新定位到另一侧,以使其继续运行,但它会变得静止,不会移动。这是我的代码

override func update(currentTime: CFTimeInterval) {


    tileStone1.position = CGPoint(x: tileStone1.position.x - 4, y: tileStone1.position.y)
    tileStone2.position = CGPoint(x: tileStone2.position.x - 4, y: tileStone2.position.y)
    tileStone3.position = CGPoint(x: tileStone3.position.x - 4, y: tileStone3.position.y)
    tileStone4.position = CGPoint(x: tileStone4.position.x - 4, y: tileStone4.position.y)
    tileStone5.position = CGPoint(x: tileStone5.position.x - 4, y: tileStone5.position.y)
    tileStone6.position = CGPoint(x: tileStone6.position.x - 4, y: tileStone6.position.y)
    tileStone7.position = CGPoint(x: tileStone7.position.x - 4, y: tileStone7.position.y)
    tileStone8.position = CGPoint(x: tileStone8.position.x - 4, y: tileStone8.position.y)
    tileStone9.position = CGPoint(x: tileStone9.position.x - 4, y: tileStone9.position.y)
    tileStone10.position = CGPoint(x: tileStone10.position.x - 4, y: tileStone10.position.y)
    tileStone11.position = CGPoint(x: tileStone11.position.x - 4, y: tileStone11.position.y)
    tileStone12.position = CGPoint(x: tileStone12.position.x - 4, y: tileStone12.position.y)



    if (tileStone1.position.x < self.frame.size.width){

        tileStone1.anchorPoint = CGPointZero

        tileStone1.position = CGPoint(x: 930 - 4, y: tileStone1.position.y)




    }
覆盖函数更新(currentTime:CFTimeInterval){
tileStone1.position=CGPoint(x:tileStone1.position.x-4,y:tileStone1.position.y)
tileStone2.position=CGPoint(x:tileStone2.position.x-4,y:tileStone2.position.y)
tileStone3.position=CGPoint(x:tileStone3.position.x-4,y:tileStone3.position.y)
tileStone4.position=CGPoint(x:tileStone4.position.x-4,y:tileStone4.position.y)
tileStone5.position=CGPoint(x:tileStone5.position.x-4,y:tileStone5.position.y)
tileStone6.position=CGPoint(x:tileStone6.position.x-4,y:tileStone6.position.y)
tileStone7.position=CGPoint(x:tileStone7.position.x-4,y:tileStone7.position.y)
tileStone8.position=CGPoint(x:tileStone8.position.x-4,y:tileStone8.position.y)
tileStone9.position=CGPoint(x:tileStone9.position.x-4,y:tileStone9.position.y)
tileStone10.position=CGPoint(x:tileStone10.position.x-4,y:tileStone10.position.y)
tileStone11.position=CGPoint(x:tileStone11.position.x-4,y:tileStone11.position.y)
tileStone12.position=CGPoint(x:tileStone12.position.x-4,y:tileStone12.position.y)

if(瓷砖1.position.x
正如Putz1103所建议的,您确实应该使用数组来代替。然后,正如我在评论中所质疑的,也许您希望使用
self.frame.minX
而不是
self.frame.size.width
?(另外,在将来,您可以使用
self.frame.width
代替
self.frame.size.width

它不移动的原因当然是因为位置总是小于宽度,这意味着每一帧都会重置位置

非常清楚:
.width
获取屏幕的宽度,比如1024,而
.minX
获取屏幕最左侧的位置,通常为0

override func update(currentTime: CFTimeInterval) {

    tileStone1.position = CGPoint(x: tileStone1.position.x - 4, y: tileStone1.position.y)
    tileStone2.position = CGPoint(x: tileStone2.position.x - 4, y: tileStone2.position.y)
    tileStone3.position = CGPoint(x: tileStone3.position.x - 4, y: tileStone3.position.y)
    tileStone4.position = CGPoint(x: tileStone4.position.x - 4, y: tileStone4.position.y)
    tileStone5.position = CGPoint(x: tileStone5.position.x - 4, y: tileStone5.position.y)
    tileStone6.position = CGPoint(x: tileStone6.position.x - 4, y: tileStone6.position.y)
    tileStone7.position = CGPoint(x: tileStone7.position.x - 4, y: tileStone7.position.y)
    tileStone8.position = CGPoint(x: tileStone8.position.x - 4, y: tileStone8.position.y)
    tileStone9.position = CGPoint(x: tileStone9.position.x - 4, y: tileStone9.position.y)
    tileStone10.position = CGPoint(x: tileStone10.position.x - 4, y: tileStone10.position.y)
    tileStone11.position = CGPoint(x: tileStone11.position.x - 4, y: tileStone11.position.y)
    tileStone12.position = CGPoint(x: tileStone12.position.x - 4, y: tileStone12.position.y)



    if (tileStone1.position.x < self.frame.minX){

        tileStone1.anchorPoint = CGPointZero

        tileStone1.position = CGPoint(x: 930 - 4, y: tileStone1.position.y)
    }
}
它比以下内容短得多,也简单得多:

tileStone.position = CGPoint(x: tileStone.position.x - 4, y: tileStone.position.y)

//or later

tileStone.position = CGPoint(x: 930 - 4, y: tileStone1.position.y)

正如Putz1103所建议的,您确实应该使用数组来代替。然后,正如我在评论中所质疑的,也许您希望使用
self.frame.minX
而不是
self.frame.size.width
?(另外,在将来,您可以使用
self.frame.width
而不是
self.frame.size.width

它不移动的原因当然是因为位置总是小于宽度,这意味着每一帧都会重置位置

非常清楚:
.width
获取屏幕的宽度,比如1024,而
.minX
获取屏幕最左侧的位置,通常为0

override func update(currentTime: CFTimeInterval) {

    tileStone1.position = CGPoint(x: tileStone1.position.x - 4, y: tileStone1.position.y)
    tileStone2.position = CGPoint(x: tileStone2.position.x - 4, y: tileStone2.position.y)
    tileStone3.position = CGPoint(x: tileStone3.position.x - 4, y: tileStone3.position.y)
    tileStone4.position = CGPoint(x: tileStone4.position.x - 4, y: tileStone4.position.y)
    tileStone5.position = CGPoint(x: tileStone5.position.x - 4, y: tileStone5.position.y)
    tileStone6.position = CGPoint(x: tileStone6.position.x - 4, y: tileStone6.position.y)
    tileStone7.position = CGPoint(x: tileStone7.position.x - 4, y: tileStone7.position.y)
    tileStone8.position = CGPoint(x: tileStone8.position.x - 4, y: tileStone8.position.y)
    tileStone9.position = CGPoint(x: tileStone9.position.x - 4, y: tileStone9.position.y)
    tileStone10.position = CGPoint(x: tileStone10.position.x - 4, y: tileStone10.position.y)
    tileStone11.position = CGPoint(x: tileStone11.position.x - 4, y: tileStone11.position.y)
    tileStone12.position = CGPoint(x: tileStone12.position.x - 4, y: tileStone12.position.y)



    if (tileStone1.position.x < self.frame.minX){

        tileStone1.anchorPoint = CGPointZero

        tileStone1.position = CGPoint(x: 930 - 4, y: tileStone1.position.y)
    }
}
它比以下内容短得多,也简单得多:

tileStone.position = CGPoint(x: tileStone.position.x - 4, y: tileStone.position.y)

//or later

tileStone.position = CGPoint(x: 930 - 4, y: tileStone1.position.y)

这段代码告诉我,一旦tile1出现在屏幕上,将其移动到
930-4
。假设它出现在屏幕上,那么下一帧它将移动到
930-4
…你真的应该把所有这些块放在一个数组中,并在它们上面循环,而不是有12个类变量…(tileStone1.position.xtileStone1.anchorPoint=CGPointZero?该代码告诉我,一旦tile1出现在屏幕上,就将其移动到
930-4
。假设它出现在屏幕上,那么下一帧它将移动到
930-4
。你应该这样做真正地把所有这些块放在一个数组中,并在它们上面循环,而不是有12个类变量…(tileStone1.position.xtileStone1.anchorPoint=CGPointZero?我同意你的答案。而且主播点没有意义,所以,对我来说,它可以删除。我同意你的答案。而主播点没有意义,所以,对我来说,它可以删除删除。