Example #1
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (state == BronyState.Slamming)
        {
            state        = BronyState.Resting;
            restingTimer = restingTime;
            CameraShaker.Instance.ShakeOnce(7, 7, .5f, 1);

            color = (EnemyColor)Random.Range(1, 4);
            switch (color)
            {
            case EnemyColor.Green:
                spr.color = green;
                break;

            case EnemyColor.Purple:
                spr.color = purple;
                break;

            case EnemyColor.yellow:
                spr.color = yellow;
                break;

            case EnemyColor.Orange:
                spr.color = orange;
                break;
            }
        }

        if (collision.tag == "Player")
        {
            playerTransform.GetComponent <PlayerMovement>().Damage();
        }
    }
Example #2
0
 public void Damage()
 {
     if (state == BronyState.Resting)
     {
         HP--;
         if (HP <= 0)
         {
             Instantiate(explotion, transform.position, Quaternion.identity);
             CameraShaker.Instance.ShakeOnce(10, 10, .5f, 1);
             playerTransform.GetComponent <PlayerMovement>().WinStance();
             Destroy(gameObject);
         }
         state     = BronyState.Seeking;
         spr.color = Color.white;
     }
 }
Example #3
0
    private void Update()
    {
        if (playerTransform.position.x < transform.position.x)
        {
            spr.flipX = true;
        }
        else
        {
            spr.flipX = false;
        }

        if (actvated)
        {
            if (audioTimer <= 0)
            {
                audioSource.PlayOneShot(bronySounds[Random.Range(0, bronySounds.Count - 1)]);
                audioTimer = audioInterval;
            }
            else
            {
                audioTimer -= Time.deltaTime;
            }
            if (state == BronyState.Seeking)
            {
                float distanceToPlayer = Vector2.Distance(transform.position, playerTransform.position);
                rb.MovePosition(transform.position + (playerTransform.position - transform.position).normalized * speed * Time.deltaTime);
                if (distanceToPlayer <= distanceToSlam)
                {
                    state           = BronyState.Elevating;
                    rb.gravityScale = 0;
                }
            }

            if (state == BronyState.Elevating)
            {
                transform.position = Vector3.Lerp(transform.position, new Vector3(transform.position.x, slamHeight), slamRaiseSpeed);

                if (Vector2.Distance(transform.position, new Vector2(transform.position.x, slamHeight)) < .1f)
                {
                    state = BronyState.Hovering;
                }
            }

            if (state == BronyState.Hovering)
            {
                if (playerTarget == Vector2.zero)
                {
                    playerTarget = new Vector2(playerTransform.position.x, slamHeight);
                }

                transform.position = Vector2.Lerp(transform.position, playerTarget, slamRaiseSpeed);

                if (Vector2.Distance(transform.position, playerTarget) < .1f)
                {
                    playerTarget = Vector2.zero;
                    state        = BronyState.Slamming;
                }
            }

            if (state == BronyState.Slamming)
            {
                rb.gravityScale = 1;
                rb.AddForce(new Vector2(0, -1) * slamSpeed);
            }

            if (state == BronyState.Resting)
            {
                if (restingTimer <= 0)
                {
                    state     = BronyState.Seeking;
                    spr.color = Color.white;
                    color     = EnemyColor.None;
                }
                else
                {
                    restingTimer -= Time.deltaTime;
                }
            }
        }
    }