0
\$\begingroup\$

I am developing a game with Unity3D with an horizontal list of elements which you can move with arrows. Here you can see an example:

example

I have created animations in order to modify the alpha value of the elements and to move them according to my script:

void Update () {
    if (managePositionInUpdate) {
        transform.position = Camera.main.ScreenToWorldPoint (new Vector3 (Screen.width * positionX, Screen.height * positionY, 10));
    }
}

In my animation, the alpha value of the centered element is initially 1 and after the animation the alpha value is 0.5, this works correctly; however, in this animation I have also put positionX of my script initially with a value A, and after the animation with a value B, and this doesn't work correctly.

I have tested the code and it works correctly without animation, but I can't get it works according to my animation. What can I do? I have read about apply root motion but It also doesn't work for me.

\$\endgroup\$
4
  • \$\begingroup\$ Are you setting the flag properly? Tried debugging the value of the position? \$\endgroup\$
    – 2600th
    Sep 13, 2014 at 19:23
  • \$\begingroup\$ @2600th What flag do you refer? \$\endgroup\$ Sep 13, 2014 at 19:55
  • \$\begingroup\$ managePositionInUpdate \$\endgroup\$
    – 2600th
    Sep 13, 2014 at 19:58
  • \$\begingroup\$ Yes, it is. I think it is not possible to modify the value of the script from animator \$\endgroup\$ Sep 13, 2014 at 20:04

1 Answer 1

0
\$\begingroup\$

The answer was here: http://answers.unity3d.com/questions/194798/scripting-animated-variables.html

Animations always "take over" the control of the animated value (position / rotation / or a script value) because it always sets the value to an absolute value. However you still can affect the value but you have to decide what's the better solution in your case:

Use [LateUpdate()][1] to modify the value. Modify means you just scale the actual value instead of setting it to a new value. In LateUpdate all animation components have applied their values for thi frame and you can "overwrite" the value as you need it.

\$\endgroup\$

You must log in to answer this question.

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