예제 #1
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == bulletTag)
        {
            foreach (var sr in flashSprites)
            {
                sr.color = flashDefaultColor;
                LeanTween.cancel(sr.gameObject);
                LeanTween.color(sr.gameObject, Color.white, flashDuration).setEasePunch();
            }

            hitPoints -= 1f;
            AudioManager.instance.Play("Hit");

            if (hitPoints <= 0.001f)
            {
                EnemyDeathParticleManager.Explode(transform.position);

                AudioManager.instance.Play("Squish");


                int n = Random.Range(0f, 1f) < secondTargetProb ? 2 : 1;

                for (int i = 0; i < n; ++i)
                {
                    Spawn(i == 0 ? rank : 0);
                }


                Transform t = Instantiate(RewardPrefab);
                t.position = transform.position + Vector3.up * 1 * Mathf.Pow(1.25f, 1 + rank);

                t.GetComponent <RewardController>().SetValue(reward);
                ScoreManager.AddScore(reward);

                Destroy(gameObject);
            }
        }
        else if (collision.gameObject.tag == enemyTag && !consumed && rank < SpawnController.maxRank)
        {
            EnemyController e = collision.gameObject.GetComponent <EnemyController>();
            if (!e.consumed && e.rank == rank)
            {
                Vector3 pos = (transform.position + e.transform.position) / 2;
                Fuse(pos, true);
                e.Fuse(pos);
            }
        }
    }
예제 #2
0
 private void Awake()
 {
     instance = this;
 }