예제 #1
0
    void OnCollisionEnter(Collision coll)
    {
        GameObject other = coll.gameObject;

        if (other.tag == "ProjectileHero")
        {
            Disparo proj = other.GetComponent <Disparo>();

            foreach (Material m in materials)
            {
                m.color = Color.red;
            }
            hurt = true;

            hp -= Main.W_DEFS[proj.getType()].damageOnHit;
            if (hp <= 0)
            {
                if (!generandoPU)
                {
                    generaPowerUp();
                }
                Destroy(this.gameObject);
            }
            Destroy(other);
        }
    }
    public Disparo disparador; //Para activar o desactivar el disparo

    // Use this for initialization
    void Awake()
    {
        anim       = GetComponent <Animator>();
        rb2d       = GetComponent <Rigidbody2D>();
        Bdash      = true;
        disparador = disparador.GetComponent <Disparo>();
    }
예제 #3
0
    IEnumerator AutoDestruirDisparo(Disparo disparo, float t)
    {
        disparo.onTriggerEnter += (col) =>
        {//on hit
            if (!disparo)
            {
                return;
            }
            var atacable = col.GetComponent <Atacable>();
            if (atacable)
            {
                if (equipo == atacable.equipo)
                {
                    return;
                }
                atacable.RecibirAtaque(daño);
            }

            var vfx = Instantiate(vfxPrefab, disparo.transform.position, Quaternion.Euler(0f, 180f, 0f) * disparo.transform.rotation);
            // vfx.ColorFade(fadeFrom: false);
            Destroy(vfx.gameObject, vfx.fadeTimeDefault);
            Mirror.NetworkServer.Spawn(vfx.gameObject);
            Destroy(disparo.gameObject);
        };
        yield return(new WaitForSeconds(t));

        if (disparo)
        {
            Destroy(disparo.gameObject);
        }
    }
 // Start is called before the first frame update
 void Start()
 {
     if (disparo == null)
     {
         disparo = GetComponent <Disparo>();
     }
 }
예제 #5
0
        private void disparoEnemigo()
        {
            //Generar aleatorio para disparo
            Random      random         = new Random();
            int         numeroGenerado = 0;
            NaveEnemiga naveEnemiga    = new NaveEnemiga();

            //Conseguir la posicion de la nave que va a disparar
            do
            {
                numeroGenerado = random.Next(0, 59);
            } while (listaEnemigos.ElementAt(numeroGenerado).puedeDisparar == false);

            naveEnemiga = listaEnemigos.ElementAt(numeroGenerado);

            Disparo disparo      = new Disparo(naveEnemiga.posY + 37, naveEnemiga.posX + 19, 5, 10, new Uri("ms-appx:///Assets/Images/MisilEnemigoPro.png"));
            Image   playerBullet = new Image();

            playerBullet.Source = new BitmapImage(disparo.imagen);
            playerBullet.Height = 20;
            playerBullet.Width  = 10;
            Canvas.SetTop(playerBullet, disparo.dirY);
            Canvas.SetLeft(playerBullet, disparo.dirX);
            this.canvas.Children.Add(playerBullet);
            moveBulletEnemigo(disparo.velocidad, playerBullet);
        }
예제 #6
0
    //6.COLISIÓN CON LA BALA
    public void OnTriggerEnter2D(Collider2D other)
    {
        Disparo compDisparo = other.GetComponent <Disparo>();

        if (compDisparo != null && compDisparo.TipoDeBala == Disparo.TipoBala.BalaJugador)
        {
            vida--;
            GetComponent <AudioSource>().PlayOneShot(daño);
            Destroy(other.gameObject);
            //Muere
            if (vida < 1)
            {
                animacion.SetBool("Muere", true);
                muere = true;
                Invoke("Muere", 0.5f);
            }
            //Knockback
            else
            {
                Rigidbody2D rigid = GetComponent <Rigidbody2D>();
                if (other.transform.position.x > transform.position.x)
                {
                    rigid.AddForce(new Vector2(-150f, 100f));
                }
                else
                {
                    rigid.AddForce(new Vector2(150f, 100f));
                }
            }
        }
    }
예제 #7
0
 void Update()
 {
     if (Input.GetKeyDown(KeyCode.Space))
     {
         Instantiate(bala, spawn.transform.position, spawn.rotation);
         Disparo disparo = bala.GetComponent <Disparo>(); //accedemos al script DisparoNave
         disparo.disparar = false;                        //y ponemos la variable "disparar" en false para que la bala salga con la fuerza necesaria descrita
     }
 }
        //aca llego cuando un zombie colisiona con un disparo
        public bool esZombie(RigidBody body, Disparo disparo)
        {
            Zombie zombieGolpeado = zombies.Find(z => z.body == body);

            if (zombieGolpeado != null)
            {
                zombieGolpeado.teGolpearon(disparo);
            }
            return(zombieGolpeado != null);
        }
예제 #9
0
    public void OnTriggerEnter2D(Collider2D other)
    {
        Disparo compDisparo = other.GetComponent <Disparo>();

        if (compDisparo != null && compDisparo.TipoDeBala == Disparo.TipoBala.BalaJugador && vulnerable == true)
        {
            vidas--;
            GameManager.instance.BossHerido(vidas);
            Destroy(other.gameObject);
        }
    }
예제 #10
0
 // Use this for initialization
 void Awake()
 {
     anim            = GetComponent <Animator>();
     rb2d            = GetComponent <Rigidbody2D>();
     Bdash           = true;
     disparador      = disparador.GetComponent <Disparo>();
     offSet          = brazo.GetComponent <ArmRotation>();
     apareceVestido  = false;
     gravedad        = -3;
     Physics.gravity = new Vector2(0, gravedad);
 }
예제 #11
0
    IEnumerator EjecutarDisparo(Disparo disparo)
    {
        for (int i = 0; i < 49; i++)
        {
            yield return(new WaitForSeconds(0.1f));

            disparo.Desplazar();
            Debug.Log(string.Format("index: {0}", i));
        }

        disparo.Finalizar();
    }
예제 #12
0
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Player")
        {
            ParticleSystem nuevoDestello = Instantiate(particulasDestello);
            nuevoDestello.transform.position = this.transform.position;

            Disparo disparo = other.gameObject.GetComponent <Disparo> ();
            disparo.ActivarMunicionPesada();

            Destroy(this.gameObject);
        }
    }
예제 #13
0
 private void disparar()
 {
     if (this.player.Opacity != 0)
     {
         Disparo disparo      = new Disparo(vMGame.posYMisil, vMGame.player.posicionX, 20, 10, new Uri("ms-appx:///Assets/Images/MisilPro.png"));
         Image   playerBullet = new Image();
         playerBullet.Source = new BitmapImage(disparo.imagen);
         playerBullet.Height = 20;
         playerBullet.Width  = 10;
         Canvas.SetTop(playerBullet, Canvas.GetTop(this.player));
         Canvas.SetLeft(playerBullet, Canvas.GetLeft(this.player) + 35);
         this.canvas.Children.Add(playerBullet);
         moveBullet(disparo.velocidad, playerBullet);
         reproducirAudioAsync("disparo.wav");
     }
 }
예제 #14
0
    //7.COLISIÓN CON LA BALA
    public void OnTriggerEnter2D(Collider2D other)
    {
        Disparo compDisparo = other.GetComponent <Disparo>();

        if (compDisparo != null && compDisparo.TipoDeBala == Disparo.TipoBala.BalaJugador)
        {
            vida--;
            GetComponent <AudioSource>().PlayOneShot(daño);
            Destroy(other.gameObject);
            if (vida < 1)
            {
                animacion.SetBool("Muere", true);
                muere = true;
                Destroy(Pistola.gameObject);
                Invoke("Muere", 0.45f);
            }
        }
    }
예제 #15
0
    //private List<GameObject[]> ObtenerLstGoDisparo()
    //{
    //    try
    //    {
    //        if (this.lstGoDisparo == null)
    //        {
    //            this.lstGoDisparo = new List<GameObject[]>();
    //        }
    //    }
    //    catch (System.Exception ex)
    //    {
    //        Debug.Log(string.Format("Error en Nave: {0}", ex));
    //        throw;
    //    }

    //    return this.lstGoDisparo;
    //}

    private Disparo CrearDisparo(Vector3 posicion)
    {
        //bool res = false;
        Disparo disparo = null;

        try
        {
            disparo = new Disparo(posicion);
            //this.lstDisparo.Add(disparo);
        }
        catch (System.Exception ex)
        {
            Debug.Log(string.Format("Error en Nave: {0}", ex));
            throw;
        }

        return(disparo);
    }
예제 #16
0
    void OnTriggerEnter2D(Collider2D other)
    {
        zonaadestruir = GameObject.FindWithTag("Muro");
        prueba        = this.GetComponent <Rigidbody2D> ();
        Disparo compDisparo = other.GetComponent <Disparo>();
        bool    explota     = Physics2D.OverlapCircle(tocazonacorrecta.position, radio, capadestruye);

        if (compDisparo != null && compDisparo.TipoDeBala == Disparo.TipoBala.BalaJugador)
        {
            Sonido.PlayOneShot(explosion);
            BoxCollider2D coll = GetComponent <BoxCollider2D> ();
            coll.enabled       = false;
            prueba.isKinematic = true;
            animacion.SetBool("alcanzado", true);
            Invoke("destruyete", 1.15f);
            if (explota)
            {
                Invoke("destruyezona", 0.7f);
            }
        }
    }
예제 #17
0
    public bool Disparar(Vector3 posicion)
    {
        bool    res         = false;
        Disparo tempDisparo = null;

        try
        {
            tempDisparo = this.CrearDisparo(posicion);
            //this.lstDisparos.Add(tempDisparo);

            StartCoroutine("EjecutarDisparo", tempDisparo);

            res = true;
        }
        catch (System.Exception ex)
        {
            Debug.Log(string.Format("Error en Nave - Disparar: {0}", ex));
            throw;
        }

        return(res);
    }
예제 #18
0
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Player")
        {
            ParticleSystem nuevoDestello = Instantiate(particulasDestello);
            nuevoDestello.transform.position = this.transform.position;

            Destroy(this.gameObject);

            Disparo disparo = other.GetComponent <Disparo> ();

            switch (this.gameObject.tag)
            {
            case "Metralleta":

                disparo.miArma = Disparo.tipDisp.metralleta;

                GestorArmaUI.instancia.setUIMetralleta();

                break;

            case "Escopeta":

                disparo.miArma = Disparo.tipDisp.escopeta;

                GestorArmaUI.instancia.setUIEscopeta();

                break;

            case "Bazooka":

                disparo.miArma = Disparo.tipDisp.bazoka;

                GestorArmaUI.instancia.setUIBazooka();

                break;
            }
        }
    }
예제 #19
0
    void Update()
    {
        //Mover Jugador
        float moveAxis  = Input.GetAxis(movInputAxis) * moveSpeed;
        float moveAxis1 = Input.GetAxis(movInputAxis1) * moveSpeed;

        Vector3 movement = new Vector3(moveAxis1, 0, moveAxis);

        Vector3 localInput = transform.TransformDirection(movement); //para coger los ejes locales

        controller.SimpleMove(localInput);


        //Saltar
        if (Input.GetButton("Jump"))
        {
            if (controller.isGrounded)         //si el jugador está en el suelo...
            {
                moveDirection.y = fuerzaSalto; //Al eje Y le aplico la fuerza de salto
            }
        }


        moveDirection.y -= gravity * Time.deltaTime; //Al eje Y le aplicamos una gravedad para la caida.



        controller.Move(moveDirection * Time.deltaTime);

        //disparar
        if (Input.GetMouseButtonDown(0))
        {
            Instantiate(bala, spawn.transform.position, spawn.rotation);
            Disparo disparo = bala.GetComponent <Disparo>(); //accedemos al script DisparoNave
            disparo.disparar = false;                        //y ponemos la variable "disparar" en false para que la bala salga con la fuerza necesaria descrita
        }
    }
예제 #20
0
    //6.COLISIONES CON TRIGGERS
    void OnTriggerEnter2D(Collider2D other)
    {
        Disparo             compBala   = other.GetComponent <Disparo>();
        Moneda              compMoneda = other.GetComponent <Moneda> ();
        MovimientoCocodrilo compCoco   = other.GetComponent <MovimientoCocodrilo> ();
        Cofre compCofre = other.GetComponent <Cofre> ();

        //Colisión con bala enemiga
        if (compBala != null && compBala.TipoDeBala == Disparo.TipoBala.BalaEnemigo)
        {
            Destroy(other.gameObject);
            if (tiempo > tiempoDeInmunidad)
            {
                RecibeDaño(2, other.gameObject);
            }
        }


        //Colisión con pociones
        else if (other.gameObject.tag == "Poción")
        {
            GetComponent <AudioSource>().PlayOneShot(cogepocion);
            GameManager.instance.GanaPoción();
            Destroy(other.gameObject);
        }
        else if (other.gameObject.tag == "Finish")
        {
            GameManager.instance.FinNivel();
        }
        else if (other.gameObject.tag == "Checkpoint")
        {
            if (GameManager.instance.NivelActual() != 3)
            {
                GameManager.instance.Checkpoint();
            }
            else
            {
                GameManager.instance.FijaCamara();
                Destroy(other.gameObject);
            }
        }
        else if (other.gameObject.tag == "DeadZone")
        {
            GameManager.instance.RecibeDaño(10, true);
        }


        //Colisión con monedas
        else if (compMoneda != null)
        {
            GameManager.instance.GanaMonedas(compMoneda.Valor);
            Destroy(other.gameObject);
        }

        //Colisión con cocodrilos
        else if (compCoco != null && tiempo > tiempoDeInmunidad)
        {
            RecibeDaño(1, other.gameObject);
        }


        //Colisión con cofres (enemigos)
        else if (compCofre != null && tiempo > tiempoDeInmunidad &&
                 compCofre.enemigo && compCofre.abierto)
        {
            RecibeDaño(2, other.gameObject);
        }
        else
        {
            ColisionPichos(other.gameObject);
        }
    }
예제 #21
0
 // Use this for initialization
 private void Awake()
 {
     playerdispara = GetComponentInChildren <Disparo>();
 }