I have a very simple character that needs a certain expression that I just can't seem to figure out.
The main idea is that I want the Y-position of a certain layer to influence the rotation of another layer.
To kind of explain the situation : I have a character that jumps up and down. (So just 'bounces' on the y position)
I have a few separate layers which are the hairs of the character. (It's a round, fluffy type of character)
I have the hair layers parented to the main body, and I would like these to slightly rotate when the character moves up and down. If it would be just 1 shot I could obviously do that manually, but the character bounces around quite a lot so I think that an expression would work the best in this situation.
So it would be a kind of expression saying : If Position-value of 'Layer1' decreases rotate this layer X degrees. If position-value of Layer1 increases rotate this layer X degrees.
I hope anyone could point me in the right direction here.
To get this to work, you need to know what the Y-val of your character would be on the ground as well as when he's in the air. Additionally, you need to know what rotation vals you want those states to correspond to. Once you have those 4 values, it's a very simple expression to link the two. For instance you could put this expression on your hair layer's rotate property.
This expression, in simple terms, basically says as yPosition goes from 0 to 100, rotation goes from 0 to 60.
Hope it helps!
//get the jumping layer
var jump = thisComp.layer("jump_control").transform.position;
var groundY = 0; //the value of your character on the ground
var jumpY = 100; //the value of your character in the air
var groundRotate = 0; //the hair rotation on the ground
var jumpRotate = 60; //the hair rotation in the air
//use linear() to match these values
linear(jump, groundY, jumpY, groundRotate, jumpRotate);