Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 改变SKSpriteNode的x位置_Ios_Sprite Kit_Position - Fatal编程技术网

Ios 改变SKSpriteNode的x位置

Ios 改变SKSpriteNode的x位置,ios,sprite-kit,position,Ios,Sprite Kit,Position,我在我的游戏中运行一个for循环,它将生成SKSpriteNodes 我希望我的第一个块从(20,40)开始,每个新块的x位置加20,y位置加40 第一座(20、40) 第二座(40、80) 第三座(60、120) 等等 y位置按照我想要的方式运行,但是x位置将随机从我屏幕上的任何位置开始,然后为生成的每个新块添加20 下面是我的代码 func generateBlocks() { for _ in 1..<5 {

我在我的游戏中运行一个for循环,它将生成SKSpriteNodes

我希望我的第一个块从(20,40)开始,每个新块的x位置加20,y位置加40

第一座(20、40) 第二座(40、80) 第三座(60、120) 等等

y位置按照我想要的方式运行,但是x位置将随机从我屏幕上的任何位置开始,然后为生成的每个新块添加20

下面是我的代码

       func generateBlocks() {

            for _ in 1..<5 {

                xP += 20
                yP += 40

                let xx = CGFloat (xP)
                let yy = CGFloat (yP)

                print("x position: \(xx)")
                print("y position: \(yy)")

                let resourcePath = NSBundle.mainBundle().pathForResource("Blocks", ofType: "sks")
                let blocks = MSReferenceNode(URL: NSURL (fileURLWithPath: resourcePath!))

                blocks.goals.position = CGPoint (x: xx,y: yy)
                addChild(blocks)
    }

    }
func generateBlocks(){
对于uu in 1..我更愿意用于这种必须从一开始就施加条件的操作,例如限制:

class GameScene: SKScene {
    let deltaX:CGFloat = 20.0
    let deltaY:CGFloat = 40.0
    override func didMoveToView(view: SKView) {
        let widthLimit = self.frame.width-40
        let heightLimit = self.frame.height-140
        let startX:CGFloat = 80.0
        drawStair(startX,limits:CGSizeMake(widthLimit,heightLimit))
    }
    func drawStair(startFromX:CGFloat,limits:CGSize) {
        var currentX:CGFloat = startFromX
        var currentY:CGFloat = startFromX+deltaY
        while currentX<limits.width && currentY<limits.height {
            drawBlock(CGPointMake(currentX,currentY))
            currentX += deltaX
            currentY += deltaY
        }
    }
    func drawBlock(position: CGPoint,size:CGSize = CGSizeMake(40,40)) {
        let block = SKSpriteNode(color: UIColor.redColor(), size: size)
        block.position = position
        block.name = "block"
        addChild(block)
    }
}
class游戏场景:SKScene{
设deltaX:CGFloat=20.0
设deltaY:CGFloat=40.0
覆盖func didMoveToView(视图:SKView){
让宽度限制=self.frame.width-40
let heightLimit=self.frame.height-140
让startX:CGFloat=80.0
绞车楼梯(起点,极限:CGSizeMake(宽度极限,高度极限))
}
func drawStair(起点:CGFloat,极限:CGSize){
var currentX:CGFloat=startFromX
var currentY:CGFloat=startFromX+deltaY
而currentX我更愿意用于这种必须从一开始就施加条件的操作,例如限制:

class GameScene: SKScene {
    let deltaX:CGFloat = 20.0
    let deltaY:CGFloat = 40.0
    override func didMoveToView(view: SKView) {
        let widthLimit = self.frame.width-40
        let heightLimit = self.frame.height-140
        let startX:CGFloat = 80.0
        drawStair(startX,limits:CGSizeMake(widthLimit,heightLimit))
    }
    func drawStair(startFromX:CGFloat,limits:CGSize) {
        var currentX:CGFloat = startFromX
        var currentY:CGFloat = startFromX+deltaY
        while currentX<limits.width && currentY<limits.height {
            drawBlock(CGPointMake(currentX,currentY))
            currentX += deltaX
            currentY += deltaY
        }
    }
    func drawBlock(position: CGPoint,size:CGSize = CGSizeMake(40,40)) {
        let block = SKSpriteNode(color: UIColor.redColor(), size: size)
        block.position = position
        block.name = "block"
        addChild(block)
    }
}
class游戏场景:SKScene{
设deltaX:CGFloat=20.0
设deltaY:CGFloat=40.0
覆盖func didMoveToView(视图:SKView){
让宽度限制=self.frame.width-40
let heightLimit=self.frame.height-140
让startX:CGFloat=80.0
绞车楼梯(起点,极限:CGSizeMake(宽度极限,高度极限))
}
func drawStair(起点:CGFloat,极限:CGSize){
var currentX:CGFloat=startFromX
var currentY:CGFloat=startFromX+deltaY

当你在哪里定义xP和yP?你对他们做的第一件事是增加他们的值,但我们看不到他们从哪里开始。你能在哪里定义xP和yP吗?你对他们做的第一件事是增加他们的值,但我们看不到他们从哪里开始。这是一个很好的解决方案,但是我为什么要告诉我们ed for循环是这样的,我可以在循环中创建一个switch语句,在循环中我可以在x位置加20像素和减20像素之间进行切换。我不确定用while循环是否可以做到这一点,老实说,我不太理解。但我会接受这个正确答案,因为它确实回答了我最初的问题。谢谢!永远不会ind,我能做我想做的事。谢谢你的回答!我用了while,因为概念上你不画n个元素,你想画有限制的元素,所以限制从开始位置控制这个循环这是一个很好的解决方案,但是我使用for循环的原因是,我可以在循环内创建一个switch语句,我可以n在x位置加20像素和减20像素之间切换。我不确定用while循环是否能做到这一点,老实说,我不太明白。但我会接受这个正确答案,因为它确实回答了我最初的问题。谢谢!没关系,我能做我想做的事。谢谢你的回答!我用了while因为概念上你不画n个元素,你想画有限制的元素,所以限制从开始位置控制这个循环