TweenFlows are used for creating a chain of Tweens via the append/prepend methods. You can also get timeline like control by inserting Tweens and setting them to start at a specific time. Note that TweenFlows do not honor the delays set within regular Tweens. Use the append/prependDelay method to add any required delays
Inheritance: AbstractGoTweenCollection
Ejemplo n.º 1
0
    void Start()
    {
        // create a TweenConfig that we will use on all 4 cubes
        var config = new GoTweenConfig()
            .setEaseType( GoEaseType.QuadIn ) // set the ease type for the tweens
            .materialColor( Color.magenta ) // tween the material color to magenta
            .eulerAngles( new Vector3( 0, 360, 0 ) ) // do a 360 rotation
            .position( new Vector3( 2, 8, 0 ), true ) // relative position tween so it will be start from the current location
            .setIterations( 2, GoLoopType.PingPong ); // 2 iterations with a PingPong loop so we go out and back;

        // create the flow and set it to have 2 iterations
        var flow = new GoTweenFlow(new GoTweenCollectionConfig().setIterations( 2 ));

        // add a completion handler for the chain
        flow.setOnCompleteHandler( c => Debug.Log( "flow complete" ) );

        // create a Tween for each cube and it to the flow
        var startTime = 0f;
        foreach( var cube in cubes )
        {
            var tween = new GoTween( cube, 0.5f, config );
            flow.insert( startTime, tween );

            // increment our startTime so that the next tween starts when this one is halfway done
            startTime += 0.25f;
        }

        _tween = flow;
    }
Ejemplo n.º 2
0
    void Start()
    {
        // create a TweenConfig that we will use on all 4 cubes
        var config = new GoTweenConfig()
                     .setEaseType(GoEaseType.QuadIn)         // set the ease type for the tweens
                     .materialColor(Color.magenta)           // tween the material color to magenta
                     .eulerAngles(new Vector3(0, 360, 0))    // do a 360 rotation
                     .position(new Vector3(2, 8, 0), true)   // relative position tween so it will be start from the current location
                     .setIterations(2, GoLoopType.PingPong); // 2 iterations with a PingPong loop so we go out and back;

        // create the flow and set it to have 2 iterations
        var flow = new GoTweenFlow(new GoTweenCollectionConfig().setIterations(2));

        // add a completion handler for the chain
        flow.setOnCompleteHandler(c => Debug.Log("flow complete"));

        // create a Tween for each cube and it to the flow
        var startTime = 0f;

        foreach (var cube in cubes)
        {
            var tween = new GoTween(cube, 0.5f, config);
            flow.insert(startTime, tween);

            // increment our startTime so that the next tween starts when this one is halfway done
            startTime += 0.25f;
        }

        _tween = flow;
    }
Ejemplo n.º 3
0
 static public int constructor(IntPtr l)
 {
     try {
         int         argc = LuaDLL.lua_gettop(l);
         GoTweenFlow o;
         if (argc == 1)
         {
             o = new GoTweenFlow();
             pushValue(l, o);
             return(1);
         }
         else if (argc == 2)
         {
             GoTweenCollectionConfig a1;
             checkType(l, 2, out a1);
             o = new GoTweenFlow(a1);
             pushValue(l, o);
             return(1);
         }
         return(error(l, "New object failed."));
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Ejemplo n.º 4
0
    static AbstractGoTween alphaTween(this GameObject self, bool directionTo, float duration, float endValue, GoEaseType easeType, float delay)
    {
        List <GameObject> all = self.GetChilds(GetChildOption.FullHierarchy);

        all.Add(self);
        AbstractGoTween tween  = null;
        GoTweenFlow     tweens = null;

        foreach (var v in all)
        {
            Renderer r = v.GetComponent <Renderer>();
            if (r != null)
            {
                Material m = r.material;
                if (m != null)
                {
                    if (tween != null)
                    {
                        if (tweens == null)
                        {
                            tweens = new GoTweenFlow();
                            tweens.insert(0, tween);
                        }
                    }

                    if (directionTo)
                    {
                        tween = m.alphaTo(duration, endValue).eases(easeType);
                    }
                    else
                    {
                        tween = m.alphaFrom(duration, endValue).eases(easeType);
                    }

                    if (tweens != null)
                    {
                        tweens.insert(0, tween);
                    }
                }
            }
        }

        if (tweens != null)
        {
            tweens.delays(delay);
            Go.addTween(tweens);
            return(tweens);
        }
        else
        {
            if (tween != null)
            {
                tween.delays(delay);
            }
            return(tween);
        }
    }
Ejemplo n.º 5
0
 static public int insert(IntPtr l)
 {
     try {
         GoTweenFlow   self = (GoTweenFlow)checkSelf(l);
         System.Single a1;
         checkType(l, 2, out a1);
         AbstractGoTween a2;
         checkType(l, 3, out a2);
         var ret = self.insert(a1, a2);
         pushValue(l, ret);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Ejemplo n.º 6
0
    private IEnumerator ChargePush_Coroutine(Vector3 direction)
    {
        _chargePush = true;
        GameObject punch = GameObject.CreatePrimitive(PrimitiveType.Cube);

        punch.GetComponent <MeshRenderer>().material = attackMaterial;
        punch.transform.position   = transform.position + direction;
        punch.transform.localScale = Vector3.one;
        float speed        = chargePushFXSpeed;
        bool  tweenPlaying = true;
        float time         = 0;

        Vector3 dirToPush = direction + (Vector3.down * 0.25f);

        dirToPush.Normalize();
        Quaternion rot = Quaternion.LookRotation(dirToPush);

        GoTweenFlow flow       = new GoTweenFlow();
        GoTween     punchTween = Go.to(punch.transform, chargePushFXDuration, new GoTweenConfig().scale(Vector3.zero).setEaseType(GoEaseType.ExpoIn).onComplete(c => tweenPlaying = false));

        flow.insert(0, punchTween);

        Go.killAllTweensWithTarget(body);
        GoTween rotationTween = new GoTween(body, chargePushFXDuration * 0.15f, new GoTweenConfig().rotation(rot).setEaseType(GoEaseType.ExpoOut).setIterations(2, GoLoopType.PingPong));

        flow.insert(0, rotationTween);
        flow.play();

        while (tweenPlaying)
        {
            time += Time.deltaTime;
            punch.transform.position += direction * speed * Time.deltaTime;
            speed *= chargePunchFXSpeedIncrement;
            yield return(null);
        }

        yield return(new WaitForSeconds(chargePushRecoverTime));

        Go.to(body.GetChild(0).GetComponent <MeshRenderer>(), 0.2f, new GoTweenConfig().materialColor(new Color(62f / 255f, 1f, 0)));
        body.transform.localPosition = Vector3.zero;

        Destroy(punch);
        _chargePush = false;
    }
Ejemplo n.º 7
0
    public static AbstractGoTween colorTo(this GameObject self, float duration, Color endValue, GoEaseType easeType = GoEaseType.Linear)
    {
        List <GameObject> all = self.GetChilds(GetChildOption.FullHierarchy);

        all.Add(self);
        AbstractGoTween tween  = null;
        GoTweenFlow     tweens = null;

        foreach (var v in all)
        {
            if (v.GetComponent <Renderer>() != null)
            {
                if (v.GetComponent <Renderer>().material != null)
                {
                    if (tween != null)
                    {
                        if (tweens == null)
                        {
                            tweens = new GoTweenFlow();
                            tweens.insert(0, tween);
                        }
                    }

                    tween = v.GetComponent <Renderer>().material.colorTo(duration, endValue);
                    if (tweens != null)
                    {
                        tweens.insert(0, tween);
                    }
                }
            }
        }

        if (tweens != null)
        {
            Go.addTween(tweens);
            return(tweens);
        }
        else
        {
            return(tween);
        }
    }
Ejemplo n.º 8
0
    private IEnumerator Punch_Coroutine(Vector3 direction)
    {
        GameObject punch = GameObject.CreatePrimitive(PrimitiveType.Cube);

        punch.GetComponent <MeshRenderer>().material = attackMaterial;
        punch.transform.position   = transform.position + ((_right ? body.TransformDirection(Vector3.right) : body.TransformDirection(Vector3.left)) * 0.35f);
        punch.transform.localScale = Vector3.one * 0.5f;
        float speed        = punchFXSpeed;
        bool  tweenPlaying = true;

        _right = !_right;

        Vector3 dirToPunch = body.transform.TransformDirection(Vector3.forward) + ((_right ? body.TransformDirection(Vector3.right) : body.TransformDirection(Vector3.left)) * 0.25f);

        dirToPunch.y = 0;
        dirToPunch.Normalize();
        Quaternion rot = Quaternion.LookRotation(dirToPunch);

        GoTweenFlow flow       = new GoTweenFlow();
        GoTween     punchTween = Go.to(punch.transform, punchFXDuration, new GoTweenConfig().scale(Vector3.zero).setEaseType(GoEaseType.ExpoIn).onComplete(c => tweenPlaying = false));

        flow.insert(0, punchTween);

        Go.killAllTweensWithTarget(body);
        GoTween rotationTween = new GoTween(body, punchFXDuration * 0.4f, new GoTweenConfig().rotation(rot).setEaseType(GoEaseType.ExpoOut).setIterations(2, GoLoopType.PingPong));

        flow.insert(0, rotationTween);
        flow.play();

        while (tweenPlaying)
        {
            punch.transform.position += direction * speed * Time.deltaTime;
            speed *= punchFXSpeedIncrement;
            yield return(null);
        }

        Destroy(punch);
    }
Ejemplo n.º 9
0
    private IEnumerator ChargePunch_Coroutine(Vector3 direction)
    {
        _chargePunch = true;
        GameObject punch = GameObject.CreatePrimitive(PrimitiveType.Cube);

        punch.GetComponent <MeshRenderer>().material = attackMaterial;
        punch.transform.position   = transform.position + direction;
        punch.transform.localScale = Vector3.one * 0.75f;
        float speed        = chargePunchFXSpeed;
        bool  tweenPlaying = true;
        bool  atTop        = false;
        bool  falling      = false;
        float time         = 0;

        Vector3 dirToPunch = direction + (Vector3.up * 0.25f);

        dirToPunch.Normalize();
        Quaternion rot = Quaternion.LookRotation(dirToPunch);

        GoTweenFlow flow       = new GoTweenFlow();
        GoTween     punchTween = Go.to(punch.transform, chargePunchFXDuration, new GoTweenConfig().scale(Vector3.zero).setEaseType(GoEaseType.ExpoIn).onComplete(c => tweenPlaying = false));

        flow.insert(0, punchTween);

        Go.killAllTweensWithTarget(body);
        GoTween rotationTween = new GoTween(body, chargePunchFXDuration * 0.3f, new GoTweenConfig().rotation(rot).setEaseType(GoEaseType.ExpoOut).setIterations(2, GoLoopType.PingPong));
        GoTween jumpTween     = new GoTween(body, chargePunchFXDuration * 0.6f, new GoTweenConfig().localPosition(Vector3.up * 1.5f, true).setEaseType(GoEaseType.BackOut));
        GoTween landTween     = new GoTween(body, chargePunchFXDuration * 0.15f, new GoTweenConfig().localPosition(Vector3.down * 1.5f, true).setEaseType(GoEaseType.QuadIn).onBegin(c => falling = true));

        flow.insert(0, rotationTween);
        flow.insert(0, jumpTween);
        flow.insert(chargePunchFXDuration * 0.85f, landTween);
        flow.play();

        while (tweenPlaying)
        {
            time += Time.deltaTime;
            punch.transform.position += Vector3.up * speed * Time.deltaTime;
            speed *= chargePunchFXSpeedIncrement;

            if (time > chargePunchFXDuration * 0.5f)
            {
                atTop = true;
            }

            if (!_chargeStomp && atTop && !falling && Input.GetMouseButtonDown(1))
            {
                Go.killAllTweensWithTarget(body);
                StartCoroutine(ChargeStomp_Coroutine(direction));
            }

            yield return(null);
        }

        yield return(new WaitForSeconds(chargePunchRecoverTime));

        if (!_chargeStomp)
        {
            Go.to(body.GetChild(0).GetComponent <MeshRenderer>(), 0.2f, new GoTweenConfig().materialColor(new Color(62f / 255f, 1f, 0)));
            body.transform.localPosition = Vector3.zero;
        }

        Destroy(punch);
        _chargePunch = false;
    }
Ejemplo n.º 10
0
 internal static GoTweenFlow Start(this GoTweenFlow self)
 {
     Go.addTween(self);
     return(self);
 }
Ejemplo n.º 11
0
    private IEnumerator ChargePush_Coroutine ( Vector3 direction )
    {
        _chargePush = true;
        GameObject punch = GameObject.CreatePrimitive( PrimitiveType.Cube );
        punch.GetComponent<MeshRenderer>().material = attackMaterial;
        punch.transform.position = transform.position + direction;
        punch.transform.localScale = Vector3.one;
        float speed = chargePushFXSpeed;
        bool tweenPlaying = true;
        float time = 0;

        Vector3 dirToPush = direction + ( Vector3.down * 0.25f );
        dirToPush.Normalize();
        Quaternion rot = Quaternion.LookRotation( dirToPush );

        GoTweenFlow flow = new GoTweenFlow();
        GoTween punchTween = Go.to( punch.transform , chargePushFXDuration , new GoTweenConfig().scale( Vector3.zero ).setEaseType( GoEaseType.ExpoIn ).onComplete( c => tweenPlaying = false ) );
        flow.insert( 0 , punchTween );

        Go.killAllTweensWithTarget( body );
        GoTween rotationTween = new GoTween( body , chargePushFXDuration * 0.15f , new GoTweenConfig().rotation( rot ).setEaseType( GoEaseType.ExpoOut ).setIterations( 2 , GoLoopType.PingPong ) );
        flow.insert( 0 , rotationTween );
        flow.play();

        while ( tweenPlaying )
        {
            time += Time.deltaTime;
            punch.transform.position += direction * speed * Time.deltaTime;
            speed *= chargePunchFXSpeedIncrement;
            yield return null;
        }

        yield return new WaitForSeconds( chargePushRecoverTime );
        Go.to( body.GetChild( 0 ).GetComponent<MeshRenderer>() , 0.2f , new GoTweenConfig().materialColor( new Color( 62f / 255f , 1f , 0 ) ) );
        body.transform.localPosition = Vector3.zero;

        Destroy( punch );
        _chargePush = false;
    }
Ejemplo n.º 12
0
    private IEnumerator ChargePunch_Coroutine ( Vector3 direction )
    {
        _chargePunch = true;
        GameObject punch = GameObject.CreatePrimitive( PrimitiveType.Cube );
        punch.GetComponent<MeshRenderer>().material = attackMaterial;
        punch.transform.position = transform.position + direction;
        punch.transform.localScale = Vector3.one * 0.75f;
        float speed = chargePunchFXSpeed;
        bool tweenPlaying = true;
        bool atTop = false;
        bool falling = false;
        float time = 0;

        Vector3 dirToPunch = direction + ( Vector3.up * 0.25f );
        dirToPunch.Normalize();
        Quaternion rot = Quaternion.LookRotation( dirToPunch );

        GoTweenFlow flow = new GoTweenFlow();
        GoTween punchTween = Go.to( punch.transform , chargePunchFXDuration , new GoTweenConfig().scale( Vector3.zero ).setEaseType( GoEaseType.ExpoIn ).onComplete( c => tweenPlaying = false ) );
        flow.insert( 0 , punchTween );

        Go.killAllTweensWithTarget( body );
        GoTween rotationTween = new GoTween( body , chargePunchFXDuration * 0.3f , new GoTweenConfig().rotation( rot ).setEaseType( GoEaseType.ExpoOut ).setIterations( 2 , GoLoopType.PingPong ) );
        GoTween jumpTween = new GoTween( body , chargePunchFXDuration * 0.6f , new GoTweenConfig().localPosition( Vector3.up * 1.5f , true ).setEaseType( GoEaseType.BackOut ) );
        GoTween landTween = new GoTween( body , chargePunchFXDuration * 0.15f , new GoTweenConfig().localPosition( Vector3.down *  1.5f , true ).setEaseType( GoEaseType.QuadIn ).onBegin( c => falling = true ) );
        flow.insert( 0 , rotationTween );
        flow.insert( 0 , jumpTween );
        flow.insert( chargePunchFXDuration * 0.85f , landTween );
        flow.play();

        while ( tweenPlaying )
        {
            time += Time.deltaTime;
            punch.transform.position += Vector3.up * speed * Time.deltaTime;
            speed *= chargePunchFXSpeedIncrement;

            if ( time > chargePunchFXDuration * 0.5f )
                atTop = true;

            if ( !_chargeStomp && atTop && !falling && Input.GetMouseButtonDown( 1 ) )
            {
                Go.killAllTweensWithTarget( body );
                StartCoroutine( ChargeStomp_Coroutine( direction ) );
            }

            yield return null;
        }

        yield return new WaitForSeconds( chargePunchRecoverTime );

        if ( !_chargeStomp )
        {
            Go.to( body.GetChild( 0 ).GetComponent<MeshRenderer>() , 0.2f , new GoTweenConfig().materialColor( new Color( 62f / 255f , 1f , 0 ) ) );
            body.transform.localPosition = Vector3.zero;
        }

        Destroy( punch );
        _chargePunch = false;
    }
Ejemplo n.º 13
0
    private IEnumerator Punch_Coroutine ( Vector3 direction )
    {
        GameObject punch = GameObject.CreatePrimitive( PrimitiveType.Cube );
        punch.GetComponent<MeshRenderer>().material = attackMaterial;
        punch.transform.position = transform.position + ( ( _right ? body.TransformDirection( Vector3.right ) : body.TransformDirection( Vector3.left ) ) * 0.35f );
        punch.transform.localScale = Vector3.one * 0.5f;
        float speed = punchFXSpeed;
        bool tweenPlaying = true;
        _right = !_right;

        Vector3 dirToPunch = body.transform.TransformDirection( Vector3.forward ) + ( ( _right ? body.TransformDirection( Vector3.right ) : body.TransformDirection( Vector3.left ) ) * 0.25f );
        dirToPunch.y = 0;
        dirToPunch.Normalize();
        Quaternion rot = Quaternion.LookRotation( dirToPunch );

        GoTweenFlow flow = new GoTweenFlow();
        GoTween punchTween = Go.to( punch.transform , punchFXDuration , new GoTweenConfig().scale( Vector3.zero ).setEaseType( GoEaseType.ExpoIn ).onComplete( c => tweenPlaying = false ) );
        flow.insert( 0 , punchTween );

        Go.killAllTweensWithTarget( body );
        GoTween rotationTween = new GoTween( body , punchFXDuration * 0.4f , new GoTweenConfig().rotation( rot ).setEaseType( GoEaseType.ExpoOut ).setIterations( 2 , GoLoopType.PingPong ) );
        flow.insert( 0 , rotationTween );
        flow.play();

        while ( tweenPlaying )
        {
            punch.transform.position += direction * speed * Time.deltaTime;
            speed *= punchFXSpeedIncrement;
            yield return null;
        }

        Destroy( punch );
    }