Play back and forth between animation frames. (bow animation)


I’ve created a Skeletel Mesh + 1 Animation of a Bow. The Animation is the sequence from pulling the string from idle to max (frame 0-60) and then the released string with some wobbeling around the idle position (frame 60-70).

I’am now looking now for a (the best) way to use this to:

  1. Using the pull strength the player applies to select the correct animation frame (so if it is 0% show animation frame 0, if (s)he then increases the strength to 50% jump or event play to frame 30, if (s)he then decreases the strength back to 10% jump to or play backwards to frame 6 and so on).

  2. If the bow is fired, jump to frame 60 and play it to the end.

I guess the base will be an animation blueprint which has an settable variable for the pull strength and an event/function/bool variable for shoot.

Unsure if (1d) aim offsets, montages or pure blueprints are the best way to go. Maybe I should split up the animation?

I’ve done the way with one animation for now, because it was the most natural way to go so far. created model in blender with some rather complex bone (constraints) an then put the whole process of pulling the string till after release into a single animation. Because of all the bone constraints in blender to make the pull of string look good (including deforming the bow itself to a certain amount). I think animation(s) are the only way to export it from blender to ue4 (as I think I would have to redo a lot of the bone constraints as they are not exported to ue4, to come to the same result: having a single “string bone” to pull on to trigger the pull of the string and the deformation of the bow.

Thanx 4 your ideas.

Found a sollution.

  1. Created an Animation Blueprint for that animation
  2. Created a State Machine with 3 States (Idle, Pulling, Fire)
  3. Created a PullStrength Float Variable (0…1 / 0%-100%)
  4. In the Idle and Pull State I inserted the Animation Asset and right clicked it and choose Convert to Single Frame Animation
  5. For the Idle Animation I entered a static value of 0 for Explicit Time
  6. For the Pull Animation I multiplied the PullStrength Vairable with the time of the Maximum Pull in the Animation
  7. For the Fire State I simply set the Start Position of the Animation to the Wobbeling Part.
  8. I added an Animation Event to the End of the Wobbeling to notify my Blueprint that the Fire Animation is done and to reset the Fire Variable

So the basic trick was to convert the “normal” Animation Node to an “Single Fram Animation” (see 4. above)

This is a bit old, but for anyone struggling here’s a tip: The explicit time is frame divided by frame rate.
So if you want to set your frame to be exactly 30, explicit time would be 30/30 = 1. At least that’s what worked for me.

I am thankful you didn’t say “never mind, I solved it”. Great help!