コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        // Detección jugador
        // Calculamos el vector entre el enemigo y el jugador
        auxVector.x = shootingTarget.transform.position.x - transform.position.x;
        auxVector.y = shootingTarget.transform.position.y - transform.position.y;

        modulo = Mathf.Sqrt(Mathf.Pow(auxVector.x, 2) + Mathf.Pow(auxVector.y, 2));

        targetEnemyVector.x = auxVector.x / modulo;
        targetEnemyVector.y = auxVector.y / modulo;

        // Actuamos si el jugador entra en el rango de visión del enemigo
        if (modulo <= detectionDistance)
        {
            // Disparo
            if (Time.time > nextShot)                                                                        // Disparamos si ha pasado el tiempo suficiente entre disparos
            {
                nextShot = Time.time + fireRate;                                                             // Ponemos el valor del tiempo del siguiente disparo
                GameObject newShot = Instantiate <GameObject>(shot, shotSpawn.position, shotSpawn.rotation); // Instanciamos el disparo

                ShotBehaviour shotControl = newShot.GetComponent <ShotBehaviour>();
                shotControl.vector = targetEnemyVector;
            }
        }
    }
コード例 #2
0
    protected void AddShot(float speed, float lifeTime, Transform friend)
    {
        //Add Shot to Update cicle
        if (length == shots.Length)
        {
            ShotBehaviour[] ss = new ShotBehaviour[shots.Length * 2];
            for (int i = 0; i < shots.Length; i++)
            {
                ss[i] = shots[i];
            }
            shots = ss;
        }
        shots[length] = this;
        _index        = length;
        length++;

        // ShotInit
        _speed    = speed;
        _lifeTime = lifeTime;
        _friend   = friend;

        _forward   = transform.forward;
        _back      = transform.position;
        _startTime = Time.time;
    }
コード例 #3
0
    /// <summary>
    /// Takes away health and destroys if dead
    /// </summary>
    /// <param name="collision"></param>
    void OnCollisionEnter2D(Collision2D collision)
    {
        // Hit by laser
        if (collision.gameObject.name.Contains("Laser"))
        {
            ShotBehaviour shot = collision.gameObject.GetComponent <ShotBehaviour>();
            Health -= shot.shotDamage;
            Destroy(collision.gameObject);
        }

        // Enemy dies and lets GameController know
        if (Health <= 0)
        {
            Destroy(gameObject);
            GameController controller = GameObject.FindGameObjectWithTag("GameController").
                                        GetComponent <GameController>();
            controller.KilledEnemy();
        }
    }
コード例 #4
0
    // Update is called once per frame
    void Update()
    {
        if (shootingTarget.GetComponent <Transform>().position.x > this.GetComponent <Transform>().position.x)
        {
            vector.Set(1, 0);
        }
        else
        {
            vector.Set(-1, 0);
        }

        // Disparo
        if (Time.time > nextShot)                                                                        // Disparamos si ha pasado el tiempo suficiente entre disparos
        {
            nextShot = Time.time + Random.Range(minFireRate, maxFireRate);                               // Ponemos el valor del tiempo del siguiente disparo
            GameObject newShot = Instantiate <GameObject>(shot, shotSpawn.position, shotSpawn.rotation); // Instanciamos el disparo

            ShotBehaviour shotControl = newShot.GetComponent <ShotBehaviour>();
            shotControl.vector = vector;
        }
    }
コード例 #5
0
 public static void ClearBehaviour()
 {
     shots = new ShotBehaviour[100]; length = 0;
 }
コード例 #6
0
    void Update()
    {
        playerIsInside           = detector.GetComponent <OnRangeDetector>().isOnRange;
        stalactiteSpawn.position = new Vector2(position, stalactiteSpawn.position.y);

        if (health >= 0)
        {
            if (playerIsInside)
            {
                if (Time.time > timeSinceLastStalactite + nextStalactite)
                {
                    GameObject newStalactite;
                    newStalactite           = Instantiate <GameObject>(stalactite, stalactiteSpawn);
                    timeSinceLastStalactite = Time.time;
                    nextStalactite          = Random.Range(2.5f, 3.5f);
                    position = Random.Range(0, distance) + stalactiteLeft.position.x;
                }

                if (Time.time > timeSinceLastProjectile + nextProjectile)
                {
                    GameObject newShot;
                    if (side == 0)
                    {
                        if (type == 0)
                        {
                            newShot = Instantiate <GameObject>(normalProjectile, lowerShot);
                        }
                        else
                        {
                            newShot = Instantiate <GameObject>(deadlyProjectile, lowerShot);
                        }
                    }
                    else
                    if (type == 0)
                    {
                        newShot = Instantiate <GameObject>(normalProjectile, upperShot);
                    }
                    else
                    {
                        newShot = Instantiate <GameObject>(deadlyProjectile, upperShot);
                    }

                    if (type == 1)
                    {
                        DeadlyShot shotControl = newShot.GetComponent <DeadlyShot>();
                        shotControl.direction = new Vector2(-1, 0);
                        shotControl.initTime  = Time.time;
                    }
                    else
                    {
                        ShotBehaviour shotControl = newShot.GetComponent <ShotBehaviour>();
                        shotControl.vector = new Vector2(-1, 0);
                    }

                    timeSinceLastProjectile = Time.time;
                    nextProjectile          = Random.Range(1.0f, 4.0f);
                    side = Random.Range(0, 2);
                    type = Random.Range(0, 2);
                }

                if (waterSplashed)
                {
                    GameObject newSplash;
                    newSplash     = Instantiate <GameObject>(waterSplash, waterSplashSpawn);
                    waterSplashed = false;
                    Destroy(newSplash, 0.4f);
                }

                if (exploded)
                {
                    GameObject newExplosion;
                    newExplosion = Instantiate <GameObject>(explosion, explosionSpawn);
                    exploded     = false;
                    Destroy(newExplosion, 0.3f);
                }
            }
        }
        else
        {
            Debug.Log("Dead");
        }
    }
コード例 #7
0
 private void Start()
 {
     shotBehaviour = gameObject.GetComponentInParent <ShotBehaviour>();
 }
コード例 #8
0
    // Update is called once per frame
    void Update()
    {
        if (!dead)
        {
            if (bossHP <= 10 && bossHP >= 7)
            {
                minGenerateTime = 6.0f;
                maxGenerateTime = 8.0f;

                minFireTime = 3.0f;
                maxFireTime = 5.0f;
            }
            else if (bossHP < 7 && bossHP > 3)
            {
                minGenerateTime = 4.0f;
                maxGenerateTime = 6.0f;

                minFireTime = 3.0f;
                maxFireTime = 5.0f;
            }
            else
            {
                minGenerateTime = 2.0f;
                maxGenerateTime = 3.0f;

                minFireTime = 3.0f;
                maxFireTime = 5.0f;
            }

            if (Time.time > nextEnemy)
            {
                spawnNow = Random.Range(1, 3);

                if (spawnNow == 1)
                {
                    Instantiate <GameObject>(enemyGenerate, shotSpawn1.position, shotSpawn1.rotation);
                }
                if (spawnNow == 2)
                {
                    Instantiate <GameObject>(enemyGenerate, shotSpawn2.position, shotSpawn2.rotation);
                }
                if (spawnNow == 3)
                {
                    Instantiate <GameObject>(enemyGenerate, shotSpawn3.position, shotSpawn3.rotation);
                }

                nextEnemy = Time.time + Random.Range(minGenerateTime, maxGenerateTime);
            }



            if (Time.time > nextShot)
            {
                GameObject newShot = Instantiate <GameObject>(shot, shotSpawnBoss.position, shotSpawnBoss.rotation);

                ShotBehaviour shotControl = newShot.GetComponent <ShotBehaviour>();
                shotControl.vector = targetVector;
                nextShot           = Time.time + Random.Range(minFireTime, maxFireTime);
            }

            gameObject.GetComponent <Transform>().localScale    = new Vector3(20 + bossHP, 20 + bossHP, 0);
            gameObject.GetComponent <Transform>().localPosition = initialPosition + (new Vector3(0.65f * (10 - bossHP), -0.65f * (10 - bossHP), 0));

            shotSpawnBoss.GetComponent <Transform>().position = initShotSpawnBoss;
            shotSpawn1.GetComponent <Transform>().position    = init1;
            shotSpawn2.GetComponent <Transform>().position    = init2;
            shotSpawn3.GetComponent <Transform>().position    = init3;
        }
        else
        {
            if (Time.time > nextDieTime && counter < 4)
            {
                gameObject.GetComponent <Transform>().localScale = gameObject.GetComponent <Transform>().localScale - new Vector3(5, 5, 0);
                counter++;
                nextDieTime = Time.time + dieTimeRate;
            }
            if (counter >= 4)
            {
                Instantiate <GameObject>(pickUp, shotSpawnBoss.position, shotSpawnBoss.rotation);
                Destroy(this);
            }
        }
    }