<!--
{
  "documentType" : "article",
  "framework" : "SpriteKit",
  "identifier" : "/documentation/SpriteKit/creating-position-constraints",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "Creating Position Constraints"
}
-->

# Creating Position Constraints

Create a position constraint and add it to a node.

## Discussion

You lock a node at a specific coordinate with [`positionX(_:y:)`](/documentation/SpriteKit/SKConstraint/positionX(_:y:)). Constrain a node’s horizontal position with [`positionX(_:)`](/documentation/SpriteKit/SKConstraint/positionX(_:)), or constrain its vertical position with [`positionY(_:)`](/documentation/SpriteKit/SKConstraint/positionY(_:)).

The following code shows how you can create a node with an attached physics body that’s affected by a noise field. The node moves with the noise but the constraints keep it within a rectangular region between 300 and 340 points on both the horizontal and vertical axes.

```swift
scene.physicsWorld.gravity = CGVector(dx: 0, dy: 0)
   
let noiseField = SKFieldNode.noiseField(withSmoothness: 1, animationSpeed: 0.1)
scene.addChild(noiseField)
     
let node = SKShapeNode(circleOfRadius: 10)
node.physicsBody = SKPhysicsBody(circleOfRadius: 10)
scene.addChild(node)
     
let range = SKRange(lowerLimit: 300, upperLimit: 340)

let lockToCenter = SKConstraint.positionX(range, y: range)

node.constraints = [ lockToCenter ]
```

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)