# Can or How do Animation nodes play an action by name with a delay or start time

Q: Can or how can I call a keyframed action on an object and play it at a later frame time instead of its current dopesheets or NLAs playheads start?

Explainer:

Im trying to animate a sequence of objects when they reach a condition for a fake collision simulation. In this example multiple balls falling with paint, so two objects ball that bursts and paint object that splashes.

I thought I could setup up some keyframed actions and remove them from the object and later call them from nodes on conditions but found no node way to do this.

So then I limited the animation to keeping one animation action on the object and thought I could delay it at frame 1 by feeding it frame zero until its ready to play in full with a stopwatch. But found no node that did that either.

So now all im trying to do is call the one action without a name via the "action from object" node and delay it but that does not seem to work at all. I have tried unhooking all orders but nothing seems to respect what I was expecting, attached screenshot is a simple example

I also can not figure out how to make a stopwatch to feed a time value to a lerp but did see a post about that subject

As you can see the cube animation is from 0 to 20. By the node setup the delay is 40, so the animation starts at frame 40.

you can do it with this node setup:

• Thank you this worked, I think the play activation was broken as well! I did figure out how to also do a delta time via script, which all post in an answer Jul 30 at 15:52
• Glad I could help Jul 30 at 15:53

As stated above that worked, I also figured out how to store a delta time on the object itself and feed it frames using a custom property. HOWEVER I encountered a logic issue for INVALID NETWORK that ill ask in another post

selfObject = bpy.data.objects[watashi.name]

if x > 0 and selfObject["hasPopped"] == 0 :
selfObject["hasPopped"] = 1.0
selfObject["startTime"] = timein

#outtext = watashi.name
#hasPopped = selfObject["hasPopped"]

hasPopped = selfObject["hasPopped"]

timeout = selfObject["startTime"]

deltaTime = timein - selfObject["startTime"]
if selfObject["hasPopped"] == 0 :
deltaTime = 0