Beispiel #1
0
    public void Throw(Direction direction)
    {
        transform.SetScale(0.25f);

        transform.localEulerAngles = new Vector3(0, 0, direction.ToRotationAngle());

        Vector2 localMoveVector = direction.ToVector2() * shootDistance;

        if (tween != null)
        {
            Debug.LogError("Tween is already running");
            gameObject.DestroySelf();
        }

        tween = new GoTweenChain();
        tween.insert(0, transform.localPositionTo(shootDuration, localMoveVector, true).eases(shootEase));
        tween.insert(0, transform.scaleTo(0.125f, 1).eases(GoEaseType.QuartIn));
        tween.insert(0.25f, transform.scaleTo(0.5f, 0).eases(GoEaseType.QuadOut));
        tween.insertAction(timeBetweenWeapons, () => { if (onEnd != null)
                                                       {
                                                           onEnd();
                                                       }
                           });
        tween.Start();
        tween.setOnCompleteHandler(c => gameObject.DestroySelf());
    }
Beispiel #2
0
    internal virtual void TakeDamage()
    {
        if (state == MonsterState.Living)
        {
            Vector3 splashVector = (transform.position - Player.Instance.transform.position).normalized;

            life -= 1;
            if (life == 0)
            {
                ApplySound();
                state = MonsterState.Dying;

                GoTweenChain chain = new GoTweenChain();
                chain.insert(0,
                             transform
                             .scaleTo(0.5f, 0.75f, true)
                             .eases(GoEaseType.QuartOut)
                             );
                chain.insert(0,
                             transform
                             .localEularAnglesTo(0.5f, new Vector3(0, 0, RandomFloat.Range(-180, 180)))
                             .eases(GoEaseType.QuadOut)
                             );
                chain.insert(0.25f,
                             gameObject
                             .alphaTo(0.25f, 0, GoEaseType.QuartOut)
                             );
                chain.setOnCompleteHandler(c => gameObject.DestroySelf());
                chain.Start();
            }

            transform.position += splashVector * 25;

//          bool isDying = ( life == 0 );
//          transform.position += splashVector * ( isDying ? 100 : 25 );
        }
    }
Beispiel #3
0
    float AnimateOpening()
    {
        AbstractGoTween tween = null;

        switch (gateName)
        {
        case GateName.Basique:
            tween = sprite.transform.localPositionTo(1, new Vector3(-70, 0, 0), true);
            break;

        case GateName.Bleue:
            tween = sprite.transform.localPositionTo(1, new Vector3(0, -120, 0), true);
            break;

        case GateName.Cassée:
        {
            GoTweenChain chain = new GoTweenChain();
            chain.insert(0, sprite.transform.localPositionTo(0.5f, new Vector3(-2, -3, 0)));
            chain.insert(0.5f, sprite.transform.localPositionTo(1.0f, new Vector3(-60, 770, 0)));
            chain.Start();
            tween = chain;
        }
        break;

        case GateName.Cloche:
        {
            GoTweenChain chain = new GoTweenChain();
            chain.insert(0, sprite.transform.localPositionTo(0.5f, new Vector3(5, -5, 0)));
            chain.insert(0.5f, sprite.transform.localPositionTo(1.0f, new Vector3(-30, 55, 0)));
            chain.Start();
            tween = chain;
        }
        break;

        case GateName.Colonne:
        {
            GoTweenChain chain = new GoTweenChain();
            chain.insert(0, spriteA.transform.localPositionTo(1, new Vector3(-75, 10, 0)));
            chain.insert(0, spriteB.transform.localPositionTo(1, new Vector3(95, 10, 0)));
            chain.insert(1, spriteA.transform.localPositionTo(1, new Vector3(-75, 95, 0)));
            chain.insert(1, spriteB.transform.localPositionTo(1, new Vector3(105, 95, 0)));
            chain.Start();
            tween = chain;
        }
        break;

        case GateName.Herbe:
            tween = sprite.transform.localPositionTo(1, new Vector3(0, -40, 0));
            break;

        case GateName.Jaune:
            tween = sprite.transform.localPositionTo(1, new Vector3(0, -70, 0));
            break;

        case GateName.Oeil:
            tween = sprite.transform.localPositionTo(1, new Vector3(0, 85, 0));
            break;

        case GateName.Orange:
            tween = sprite.transform.localPositionTo(1, new Vector3(70, 0, 0));
            break;

        case GateName.Orientale:
        {
            GoTweenChain chain = new GoTweenChain();
            chain.insert(0, spriteA.transform.localPositionTo(1, new Vector3(0, 50, 0), true));
            chain.insert(0, spriteB.transform.localPositionTo(1, new Vector3(0, -50, 0), true));
            chain.Start();
            tween = chain;
        }
        break;

        case GateName.Rouge:
            tween = sprite.transform.localPositionTo(1, new Vector3(0, -70, 0), true);
            break;

        case GateName.TriangleDroite:
            tween = sprite.transform.localPositionTo(1, new Vector3(65, 0, 0), true);
            break;

        case GateName.TriangleGauche:
            tween = sprite.transform.localPositionTo(1, new Vector3(-70, 0, 0), true);
            break;

        case GateName.Verte:
            tween = sprite.transform.localPositionTo(1, new Vector3(0, -65, 0), true);
            break;

        default:
            return(0);
        }

        return(tween.totalDuration);
    }
Beispiel #4
0
    internal ComboPaneResolution TryResolvingState( Player player, List<InputActionName> inputs )
    {
        if ( isCompleted )
            return ComboPaneResolution.Completed;

        bool isFailed = false;

        int activatedCount = 0;
        for ( int i = 0; i < combo.actions.Count; i++ )
        {
            if ( i < inputs.Count )
                if ( inputs[i] == combo.actions[i] )
                    activatedCount++;
                else
                {
                    isFailed = true;
                    break;
                }
        }

        if ( player.playerSide == PlayerSide.Left )
            activatedCountPlayerLeft = activatedCount;

        if ( player.playerSide == PlayerSide.Right )
            activatedCountPlayerRight = activatedCount;

        if ( isFailed )
        {
            return ComboPaneResolution.Failed;
        }

        isCompleted = ( activatedCount == buttons.Count );
        if ( isCompleted )
        {
            state = ComboPaneState.Absorbed;

            player.PrepareAttack ( Size );

            GoTweenChain chain = new GoTweenChain();
            chain.append ( transform.scaleTo ( 0.125f, 1.5f ).eases ( GoEaseType.Linear ) );
            chain.append ( transform.scaleTo ( 0.125f, 1.0f ).eases ( GoEaseType.Linear ) );

            chain.insert ( 0.25f, transform.scaleTo ( 1.25f, 0.25f ).eases ( GoEaseType.QuadInOut ) );
            chain.insert ( 0.25f, transform.positionTo ( 1.25f,
                player.ComboCollectPosition
                ).eases ( GoEaseType.QuadInOut ) );
            chain.setOnCompleteHandler ( c => {
                gameObject.DestroySelf ();
                } );
            chain.Start ();

            return ComboPaneResolution.Completed;
        }
        else
        {
            return ComboPaneResolution.NotCompleted;
        }
    }