---
title: SCNAnimatable
framework: scenekit
role: symbol
role_heading: Protocol
path: scenekit/scnanimatable
---

# SCNAnimatable

The common interface for attaching animations to nodes, geometries, materials, and other SceneKit objects.

## Declaration

```swift
protocol SCNAnimatable : NSObjectProtocol
```

## Mentioned in

Animating SceneKit Content

## Overview

Overview SceneKit uses the same architecture as the Core Animation framework, allowing you to animate property changes implicitly or explicitly. For implicit animation, use the SCNTransaction class to quickly create simple animations with very little code. For more complex animations, explicitly create CAAnimation objects, and use the methods in the SCNAnimatable protocol to attach them to the SceneKit objects you want to animate. You also use the methods in this protocol to control any animations already attached to a SceneKit object. For example, making a node spin continuously for as long as it appears in the scene graph requires explicitly creating an animation that repeats. The following code creates such an animation and attaches it to a node: CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"rotation"]; // Animate one complete revolution around the node's Y axis. rotationAnimation.toValue = [NSValue valueWithSCNVector4:SCNVector4Make(0, 1, 0, M_PI * 2)]; rotationAnimation.duration = 10.0; // One revolution in ten seconds. rotationAnimation.repeatCount = FLT_MAX; // Repeat the animation forever. [node addAnimation:rotationAnimation forKey:nil]; // Attach the animation to the node to start it.

## Topics

### Managing Animations

- [addAnimation(_:forKey:)](scenekit/scnanimatable/addanimation(_:forkey:).md)
- [animation(forKey:)](scenekit/scnanimatable/animation(forkey:).md)
- [animationKeys](scenekit/scnanimatable/animationkeys.md)
- [removeAllAnimations()](scenekit/scnanimatable/removeallanimations().md)
- [removeAnimation(forKey:)](scenekit/scnanimatable/removeanimation(forkey:).md)
- [removeAnimation(forKey:fadeOutDuration:)](scenekit/scnanimatable/removeanimation(forkey:fadeoutduration:).md)

### Pausing and Resuming Animations

- [pauseAnimation(forKey:)](scenekit/scnanimatable/pauseanimation(forkey:).md)
- [resumeAnimation(forKey:)](scenekit/scnanimatable/resumeanimation(forkey:).md)
- [isAnimationPaused(forKey:)](scenekit/scnanimatable/isanimationpaused(forkey:).md)

### Instance Methods

- [addAnimationPlayer(_:forKey:)](scenekit/scnanimatable/addanimationplayer(_:forkey:).md)
- [animationPlayer(forKey:)](scenekit/scnanimatable/animationplayer(forkey:).md)
- [removeAllAnimations(withBlendOutDuration:)](scenekit/scnanimatable/removeallanimations(withblendoutduration:).md)
- [removeAnimation(forKey:blendOutDuration:)](scenekit/scnanimatable/removeanimation(forkey:blendoutduration:).md)
- [setAnimationSpeed(_:forKey:)](scenekit/scnanimatable/setanimationspeed(_:forkey:).md)

## Relationships

### Inherits From

- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

### Conforming Types

- [SCNAccelerationConstraint](scenekit/scnaccelerationconstraint.md)
- [SCNAnimationPlayer](scenekit/scnanimationplayer.md)
- [SCNAvoidOccluderConstraint](scenekit/scnavoidoccluderconstraint.md)
- [SCNBillboardConstraint](scenekit/scnbillboardconstraint.md)
- [SCNBox](scenekit/scnbox.md)
- [SCNCamera](scenekit/scncamera.md)
- [SCNCapsule](scenekit/scncapsule.md)
- [SCNCone](scenekit/scncone.md)
- [SCNConstraint](scenekit/scnconstraint.md)
- [SCNCylinder](scenekit/scncylinder.md)
- [SCNDistanceConstraint](scenekit/scndistanceconstraint.md)
- [SCNFloor](scenekit/scnfloor.md)
- [SCNGeometry](scenekit/scngeometry.md)
- [SCNIKConstraint](scenekit/scnikconstraint.md)
- [SCNLight](scenekit/scnlight.md)
- [SCNLookAtConstraint](scenekit/scnlookatconstraint.md)
- [SCNMaterial](scenekit/scnmaterial.md)
- [SCNMaterialProperty](scenekit/scnmaterialproperty.md)
- [SCNMorpher](scenekit/scnmorpher.md)
- [SCNNode](scenekit/scnnode.md)
- [SCNParticleSystem](scenekit/scnparticlesystem.md)
- [SCNPlane](scenekit/scnplane.md)
- [SCNPyramid](scenekit/scnpyramid.md)
- [SCNReferenceNode](scenekit/scnreferencenode.md)
- [SCNReplicatorConstraint](scenekit/scnreplicatorconstraint.md)
- [SCNShape](scenekit/scnshape.md)
- [SCNSliderConstraint](scenekit/scnsliderconstraint.md)
- [SCNSphere](scenekit/scnsphere.md)
- [SCNTechnique](scenekit/scntechnique.md)
- [SCNText](scenekit/scntext.md)
- [SCNTorus](scenekit/scntorus.md)
- [SCNTransformConstraint](scenekit/scntransformconstraint.md)
- [SCNTube](scenekit/scntube.md)

## See Also

### Explicit Animation

- [SCNAnimationEvent](scenekit/scnanimationevent.md)
- [SCNAnimation](scenekit/scnanimation-swift.class.md)
- [SCNAnimationPlayer](scenekit/scnanimationplayer.md)
- [SCNTimingFunction](scenekit/scntimingfunction.md)
- [SCNAnimationProtocol](scenekit/scnanimationprotocol.md)
- [SCNAnimation](scenekit/scnanimation-swift.class.md)
