- Home /
iTween ValueTo not working
Hi there,
I'm currently using multiple iTween paths to control my camera's location. (C# script).
I have two separate functions that handle different ValueTo commands:
public float percentageA = 0f;
public float percentageB = 0f;
public float EasingSpeedA = 1f;
public float EasingSpeedB = 1f;
public GameObject gObjectA;
public GameObject gObjectB;
public Transform [] RailA;
public Transform [] RailB;
void Update()
{
iTween.PutOnPath(gObjectA,RailA,percentageA);
iTween.PutOnPath(gObjectB,RailB,percentageB);
}
public void SlideATo(float position)
{
Debug.Log("B " + position);
iTween.ValueTo(gObjectA,iTween.Hash("from",percentageA,"to",position,"time",EasingSpeedA,"easetype",iTween.EaseType.easeInOutCubic,"onupdate","SlideAPercentage"));
}
void SlideAPercentage(float p)
{
percentageA=p;
}
public void SlideBTo(float position)
{
Debug.Log("B " + position);
iTween.ValueTo(gObjectB,iTween.Hash("from",percentageB,"to",position,"time",EasingSpeedB,"easetype",iTween.EaseType.easeInOutCubic,"onupdate","SlideBPercentage"));
}
void SlideBPercentage(float p)
{
percentageB=p;
}
Now in another script I am calling both the SlideATo and SlideBTo functions at different times, and can even get to the point where both Debug.Log messages can be made to appear; however, for some reason I can get 'percentageB' to change using the ValueTo command, but not 'percentageA'.
Can anybody tell me what I might be doing wrong?
Answer by hiddenspring81 · May 28, 2013 at 02:02 PM
Be careful when setting up callbacks for iTween. Any callbacks for onupdate
, onstart
, oncomplete
, etc. will be invoked on the target GameObject, and not on the script that was setting up the ValueTo
tween. For example, the callbacks for
iTween.ValueTo(gObjectB,iTween.Hash("from",percentageB,"to",position,"time",EasingSpeedB,"easetype",iTween.EaseType.easeInOutCubic,"onupdate","SlideBPercentage"));
Will be invoked on gObjectB
, but you callback methods were defined on a script, attached to gameObject
. You can override this behavior by supplying the onupdatetarget
parameter (there are similarly named parameters for other events too), which will redirect the iTween callback to a GameObject of your choosing. Your code will then become
iTween.ValueTo(gObjectB,iTween.Hash("from",percentageB,"to",position,"time",EasingSpeedB,"easetype",iTween.EaseType.easeInOutCubic,"onupdate","SlideBPercentage","onupdatetarget",gameObject));
This code is untested, but it should give you an idea about how to solve the problem.
Your answer
Follow this Question
Related Questions
iTween - look for new path, move to or reverse at end? 0 Answers
ITween orienttopath x-y-z? 1 Answer
How do you create random paths in iTween? 0 Answers
how to cancel iTween Catmull-Rom path 1 Answer
iTween even velocity 9 Answers