1
$\begingroup$

I have an object with two animations. I have two properties. Each property controls an animation (prop1 controls anim1, prop2 controls anim2). In the logic, I have Always (Frequency) > And Action twice: one for each animation. I've tried using 1 animation with the property, and it worked. I tried the second alone and it also worked. When I have both, it doesn't work. I've changed the layers for each animation and it still didn't work. I've changed the priorities of each one. I've played with everything I could in hopes that they can work together. I then moved on to seek a different approach. Using playAction() responds horribly slow. I've tried changing each animation's sensor from Always into Property, so that a given animation will play only when property (string property) play is set to the animations name. I've continued to a numerous amount of approaches, but nothing worked. The animations simply don't work with each other. Why is this happening and how can I have the animations both be able to play blazingly fast (plays at the exact tick)?

$\endgroup$
5
  • $\begingroup$ Have you tried creating a seperate action that has the two actions combined, and then just running that instead of trying to trigger both? $\endgroup$
    – Rick Riggs
    Feb 26, 2016 at 2:47
  • $\begingroup$ How exactly would I have them both in one action? Do you mean having a separate animation with the keyframes for animation one and animation two? $\endgroup$
    – blackhole
    Feb 26, 2016 at 5:19
  • $\begingroup$ May I ask what you are using the always input to detect? It may be helpful to know this. $\endgroup$
    – Rick Riggs
    Mar 16, 2016 at 21:41
  • $\begingroup$ It might be helpful to mix Always with a "NOT" Signal/Message with your String Property again via an AND to perform a single action. Then do the same thing for the other action in question via a separate AND Controller, using the "NOT" of the other String Property Message. $\endgroup$
    – Rick Riggs
    Mar 16, 2016 at 21:51
  • $\begingroup$ @Rock Riggs I see your approach, but it isn't ideal as: it responds with a delay, and it won't work with more than three animations. In my actual file, I have multiple animations, but I had just put two for the question. I should of written three, my bad. Thanks though. $\endgroup$
    – blackhole
    Mar 17, 2016 at 2:42

2 Answers 2

3
$\begingroup$

The attached BLEND file shows how this is accomplished. The trick is to use three different actions added each to their own "NLA" tracks.

It's set up to use the GE, so use keys A, S, & D to control animation #1, #2, & #3 (#3 = #1 & #2 together).

enter image description here

The Blend File:

$\endgroup$
2
  • $\begingroup$ Thank you for the answer. Can you clarify on exactly what are "NLA tracks" and how to use them? Also, I'm not sure if you've understood exactly what I mean. I am not looking for both to play at once. They are all running at once, for they go with a property (every tick, the action is played depending on the property). In my scene, if one is equal to any number higher than 0, the other will usually be 0. They will never play over each other in terms of the frame being greater than 0. I am just wondering why having both actions run every tick makes them not work. It sets a priority? $\endgroup$
    – blackhole
    Feb 27, 2016 at 6:25
  • $\begingroup$ As far as NLA tracks, I'm not exactly sure how to explain them, other than they provide a place holder like a track would in the VSE (Video Sequence Editor). As for the property controlling the "tick(s)" that was what I was hoping to resolve by showing you how to control multiple at once, but it sounds as if maybe it doesn't quite fit your exact circumstance. $\endgroup$
    – Rick Riggs
    Feb 28, 2016 at 3:28
0
$\begingroup$

Working just as fast as needed, using one actuator but changing its property name and animation name when needed solves the problem. You can define the animation with the following:

animation = armature.actuators["animation"]

When you need to play animation one, do the following:

animation.action = "anim1"
animation.propName = "anim1"

The same follows for animation two.

This is ideal as it is just as fast as using one animation, and it works with more than two animations.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .