Exemplo n.º 1
0
 public void Activate()
 {
     active         = true;
     currentTimer   = 0;
     currentState   = PounceState.wait;
     jumpsRemaining = maxJumps;
 }
Exemplo n.º 2
0
 public void Activate()
 {
     active         = true;
     currentTimer   = 0;
     currentState   = PounceState.wait;
     finalTarget    = Quaternion.Euler(0f, 0f, Random.Range(0, 360f)) * (Vector2.right * finalRadius);
     jumpsRemaining = maxJumps;
 }
Exemplo n.º 3
0
    void Move()
    {
        familiar.SetSprite(pounceSprite);

        currentTimer      -= Time.deltaTime;
        transform.position = Vector3.MoveTowards(transform.position, currentTarget, Time.deltaTime * speed);

        if (currentTimer <= 0)
        {
            currentTimer += Random.Range(.5f * maxWaitTime, maxWaitTime);
            currentState  = PounceState.wait;
        }
        ;
    }
Exemplo n.º 4
0
    void Wait()
    {
        familiar.SetSprite(waitSprite);

        if (jumpsRemaining <= 0)
        {
            currentState = PounceState.finished;
            return;
        }

        currentTimer -= Time.deltaTime;
        if (currentTimer <= 0)
        {
            currentState = PounceState.calculate;
        }
        ;
    }
Exemplo n.º 5
0
    void Calculate()
    {
        Vector3 direction = (finalTarget - transform.position);

        direction.Normalize();
        direction = direction * speed * maxMoveTime;

        Vector3 scattering = Quaternion.Euler(0f, 0f, Random.Range(0, 360f)) * (Vector2.right * scatteringRadius);

        currentTarget = direction + scattering;

        Vector3 localScale = transform.localScale;

        localScale.x         = (currentTarget.x > transform.position.x) ? .5f : -.5f;
        transform.localScale = localScale;

        currentTimer += maxMoveTime;
        jumpsRemaining--;
        currentState = PounceState.move;
    }