2017-06-23 3 views
0

J'ai essayé de déplacer mes sprites au hasard (les carrés) mais tous les sprites vont à la même position et "vibrants". Quelle est la meilleure façon de déplacer le sprite pour toujours et avec une position aléatoire?Déplacer le sprite pour toujours avec une position aléatoire à l'écran

//Make random shape 
func makeShape() { 

    //Check if have more than 12 shapes 
    if shapesamount <= 4 { 

     sprite = shape.copy() as! SKShapeNode 
     sprite.name = "Shpae \(shapesamount)" 

     shapes.addChild(sprite) 

     shapesamount += 1 

     moveRandom(node: sprite) 
    } 
} 

//Move shape radmonly 
func moveRandom (node: SKShapeNode) { 

     move = SKAction.move(to: CGPoint(x:CGFloat.random(min: frame.minX, max: frame.maxX), y:CGFloat.random(min: frame.minY 
      , max: frame.maxY)), duration: shapespeed) 

     node.run(move) 
} 

override func update(_ currentTime: TimeInterval) { 

    // Called before each frame is rendered 
    if istouching && !isOver { 
     let dt:CGFloat = 1.0/50.0 
     let distance = CGVector(dx: touchpoint.x - circle.position.x, dy: touchpoint.y - circle.position.y) 
     let velocity = CGVector(dx: distance.dx/dt, dy: distance.dy/dt) 
     self.circle.physicsBody!.velocity = velocity 
    } 

    if isOver == false { 
     for nodee in shapes.children { 
      moveRandom(node: nodee as! SKShapeNode) 
     } 
    } 
} 

}

formes est SKNode

Répondre

0

Vous ajoutez constamment des actions de déplacement à vos nœuds, c'est pourquoi il vibre. Vous les faites littéralement bouger dans toutes les directions à chaque image.

Au lieu de cela, ajoutez un chèque pour voir si des actions sont en cours d'exécution, sinon, changer la position:

if isOver == false { 
     for nodee in shapes.children { 
      guard !nodee.hasActions else {continue} 
      moveRandom(node: nodee as! SKShapeNode) 
     } 
    }