예제 #1
0
    // we want to spawn them slowly at first and more over time, randomly on the screen (left to right)
    void Update()
    {
        // cooldown
        if (spawnCooldown > 0)
        {
            spawnCooldown -= Time.deltaTime;
        }

        if (CanSpawn)
        {
            spawnCooldown = spawnRate;
            spawnedCount++;

            int   leftOrRight = Random.Range(1, 3);
            float randomX     = (float)leftOrRight == 1 ? spawnX : spawnX * -1;

            Transform newMosquito = (Transform)Instantiate(spawneePrefab, new Vector3(randomX, spawnY, 0f), transform.rotation);
            newMosquito.parent = transform;
            AmebaMoveScript ams      = newMosquito.GetComponent <AmebaMoveScript>();
            float           newSpeed = ams.speed + spawnedCount * speedConstant;
            ams.speed = leftOrRight == 1 ? newSpeed * -1 : newSpeed;
        }
    }
예제 #2
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        //Debug.Log("hit");

        // Collision with enemy
        EnemyScript enemy = collider.gameObject.GetComponent <EnemyScript>();

        if (enemy != null)
        {
            // Kill the mosquito enemy
            MosquitoHealthScript enemyHealth = enemy.GetComponent <MosquitoHealthScript>();
            if (enemyHealth != null)
            {
                enemyHealth.Damage(attackDamage);
            }
        }

        //collide with ameba
        AmebaMoveScript ameba = collider.gameObject.GetComponent <AmebaMoveScript>();

        if (ameba != null)
        {
            Debug.Log("ameba");

            switch (ameba.type)
            {
            case 1:
                Debug.Log("Heal Powerup");
                GameObject.Find("Scripts").GetComponent <HealthScript>().DamageBody(-amebaHealAmount);
                break;

            case 2:
                Debug.Log("Double Width Powerup");
                float powerupWidth = gameObject.transform.localScale.x * widthSizeScale;
                if (powerupWidth > 15)
                {
                    powerupWidth = 15.0f;
                }
                gameObject.transform.localScale = new Vector3(powerupWidth, gameObject.transform.localScale.y, gameObject.transform.localScale.z);
                sizePowerupCooldown             = sizePowerUpTimeLength;
                big = true;
                break;
            }
            // play noise

            AudioSource[] sounds     = GetComponents <AudioSource>();
            AudioSource   deathNoise = sounds[ameba.type - 1];
            deathNoise.Play();

            Destroy(ameba.gameObject);
        }

        //collide with egg
        EggScript egg = collider.gameObject.GetComponent <EggScript>();

        if (egg != null)
        {
            Debug.Log("blast off egg");
            egg.HitByPlayer();
        }

        // attack phase 2 boss
        KingMosquitoScript km = collider.gameObject.GetComponent <KingMosquitoScript>();

        if (km != null)
        {
            km.HitByPlayer(attackDamage);
        }
    }