상속: MonoBehaviour
예제 #1
0
    void FixedUpdate()
    {
        // se crea el area rectangular (hitbox) del dañador
        crearHitbox();

        //Debug.DrawLine(puntoA, puntoB, Color.red);

        // OverlapArea comprueba si un colisionador cae dentro del hitbox del atacante
        // los colisionadores se van a filtrar por las capas atacables especificadas
        // devuelve un int que indica la cantidad de colliders que entraron al hitbox
        int cantCollidersAtacados = Physics2D.OverlapArea(puntoA, puntoB, filtroContactoAtaque, resultsAtaqueCollider);

        // se recorren todos los colliders que entro al hitbox del dañador
        for (int i = 0; i < cantCollidersAtacados; i++)
        {
            colliderAtacable = resultsAtaqueCollider[i];

            // se obtiene el script dañable del collider que entró al hitbox
            Dañable dañable = colliderAtacable.GetComponent <Dañable>();

            // si el collider tiene el script de dañable
            if (dañable)
            {
                // la colision que entró al hitbox recibe daño, y se pasa como parametro este dañador
                // para indicar cuanto daño debe recibir el dañable
                dañable.recibirDaño(this);

                // si el dañador es una bala y colisiona con un dañable el gameobject de este script (bala) se destruye
                if (this.tag == "Bala")
                {
                    Bala.destruirBala(this.gameObject);
                }
            }
        }
    }
예제 #2
0
 void detectPosition(float X, float Y, GameObject go)
 {
     bala = go.GetComponent<Bala>();
     if (Mathf.Abs(X) < Mathf.Abs(Y))
     {
         Xaux = 0;
         if (Y >= 0)
         {
             bala.setSpeed(new Vector2(0, velocidadBala));
             Yaux = velocidadBala;
         }
         else
         {
             bala.setSpeed(new Vector2(0, -velocidadBala));
             Yaux = -velocidadBala;
         }
     }
     else
     {
         Yaux = 0;
         if (X >= 0)
         {
             bala.setSpeed(new Vector2(velocidadBala, 0));
             Xaux = velocidadBala;
         }
         else
         {
             bala.setSpeed(new Vector2(-velocidadBala, 0));
             Xaux = -velocidadBala;
         }
     }
 }
예제 #3
0
    void Shoot()
    {
        if (!presiono && balaPrefab != null && _firePoint != null)
        {
            GameObject miBala         = Instantiate(balaPrefab, _firePoint.position, Quaternion.identity) as GameObject;
            Bala       balaComponente = miBala.GetComponent <Bala>();

            if (movimiento.direccionX != 0)
            {
                if (movimiento.direccionX > 0)
                {
                    balaComponente.direccion = Vector2.right;
                }
                else
                {
                    balaComponente.direccion = Vector2.left;
                }
            }
            else
            {
                if (movimiento.direccionY > 0)
                {
                    balaComponente.direccion = Vector2.up;
                }
                else
                {
                    balaComponente.direccion = Vector2.down;
                }
            }
        }
    }
예제 #4
0
파일: Controlador.cs 프로젝트: zapic0/pfc
 /// <summary>
 /// El jugador dispara una bala (la crea)
 /// </summary>
 public void Disparar()
 {
     if (balasJugador == null)
     {
         this.balasJugador = this.raquetaJugador.Disparar();
     }
 }
예제 #5
0
    private void Disparar()
    {
        GameObject bala          = Instantiate(BalaDeCanon);
        Rigidbody  rb            = bala.GetComponent <Rigidbody>();
        Bala       balaComponent = bala.GetComponent <Bala>();

        rb.transform.position  = spawnBullet.position;
        rb.transform.rotation  = spawnBullet.rotation;
        balaComponent.miTanque = gameObject;

        //***Seccion para las balas especiales***//
        if (balasFire)           //Estas balas tienen un daño de 3 puntos sobre las paredes.
        {
            balaComponent.damage = 3;
            enfriando            = true; //Activamos el enfriamiento para luego poder volver a disparar
            //disparado = false; //Habilitamos volver a disparar con esto
        }
        else if (balasDiamond)   //Estas balas tienen daño de 3 puntos sobre las paredes y además...
        {                        //no se destruyen con ellas, de modo que las atraviesan
            balaComponent.balaDiamond = true;
            bala.GetComponent <SphereCollider>().isTrigger = true;
            enfriando = true;    //Activamos el enfriamiento para luego poder volver a disparar
            //disparado = false; //Habilitamos volver a disparar con esto
        }
        else if (balasMachineGun)//Estas balas se disparan en ráfagas
        {
            balasMGRestantes--;
        }                        //Se restan balas hasta que se termine la ráfaga

        else                     //Para las balas comunes
        {
            enfriando = true;
        }                        //Activamos el enfriamiento para luego poder volver a disparar
        //disparado = false; //Habilitamos volver a disparar con esto
    }
    void Disparar()
    {
        GameObject obj  = Instantiate(balita, this.transform.position, Quaternion.identity);
        Bala       bala = obj.GetComponent <Bala>();

        bala.ActivarBala(this);
    }
예제 #7
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetKeyDown(KeyCode.Mouse0))
     {
         Bala bala = (Bala)Instantiate(prefab, this.transform.position, this.transform.rotation);
     }
 }
        /// <summary>
        /// Carrega os assets necessários e cria centenas de instâncias
        /// </summary>
        /// <param name="contents">Instância de ContentManager</param>
        public static void LoadContent(ContentManager contents)
        {
            content = contents;

            balasAtivas = new List <Bala>(500);
            balasMortas = new List <Bala>(500);

            misseisAtivos = new List <Missil>(500);
            misseisMortos = new List <Missil>(500);

            balaplayer    = contents.Load <Texture2D>("balaplayer");
            balainimigo   = contents.Load <Texture2D>("balainimigo");
            missilplayer  = contents.Load <Texture2D>("missilPlayer");
            missilinimigo = contents.Load <Texture2D>("missil");
            baladefesas   = contents.Load <Texture2D>("baladefesas");

            vectorTemp = Vector2.Zero;

            //gerar 100 balas vazias
            for (int i = 0; i < 500; i++)
            {
                balaTemp = new Bala(content, "balaplayer", 0, OrigemBala.player, DireccaoBala.EmFrente);
                balasMortas.Add(balaTemp);
            }

            //gerar 50 misseis vazios
            for (int i = 0; i < 500; i++)
            {
                missilTemp = new Missil(content, "missilPlayer", TipoMissil.EmFrente, 0, OrigemBala.player);
                misseisMortos.Add(missilTemp);
            }
        }
예제 #9
0
    void Disparar()
    {
        Bala bala = DespacharBalaLibre();

        disparo.Play();
        bala.ActivarBala(this);
    }
예제 #10
0
        /// <summary>
        /// Recicla uma bala que é necessária para o jogo
        /// </summary>
        /// <param name="assetname">Nome da textura a utilizar</param>
        /// <param name="direcao">Direção do ecrã em que a bala se movimenta</param>
        /// <param name="origemBala">Entidade que originou a bala</param>
        /// <param name="direcaoBala">Tipo de bala - Em frente, cima ou baixo</param>
        /// <param name="parent">Turret que disparou a bala</param>
        /// <returns>Uma bala reciclada</returns>
        public static Bala addBala(string assetname, int direcao, OrigemBala origemBala, DireccaoBala direcaoBala, Defence parent = null)
        {
            balaTemp = balasMortas.First();
            if (assetname == "balaplayer")
            {
                balaTemp.image = balaplayer;
            }
            else if (assetname == "baladefesas")
            {
                balaTemp.image = baladefesas;
            }
            else
            {
                balaTemp.image = balainimigo;
            }

            balaTemp.parent = parent;

            vectorTemp.X           = 1f;
            vectorTemp.Y           = (float)balaTemp.image.Height / (float)balaTemp.image.Width;
            balaTemp.size          = vectorTemp;
            balaTemp.spriteEffects = direcao > 0 ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
            balaTemp.direccao      = direcao;
            balaTemp.origemBala    = origemBala;
            balaTemp.direccaobala  = direcaoBala;
            balaTemp.direction     = Vector2.Zero;
            balasAtivas.Add(balaTemp);
            balasMortas.Remove(balaTemp);
            return(balaTemp);
        }
예제 #11
0
    void Shoot()
    {
        switch (_player)
        {
        case Player.PLAYER_1:
            if (_turno == true)
            {
                _cannonBall = Instantiate(_bomb);
                _bala       = _cannonBall.GetComponent <Bala>();
                _cannonBall.transform.position = _canonTarget.position;
                _bala.Angle = _canon.transform.eulerAngles.z;
                _bala.Vel   = _balaVelP1;
                _bala.Fired = true;
            }
            break;

        case Player.PLAYER_2:
            if (_turno == false)
            {
                _cannonBall = Instantiate(_bomb);
                _bala       = _cannonBall.GetComponent <Bala>();
                _cannonBall.transform.position = _canonTarget.position;
                _bala.Angle = _canon.transform.eulerAngles.z;
                _bala.Vel   = _balaVelP2;
                _bala.Fired = true;
            }
            break;
        }
    }
예제 #12
0
    public void Shoot()
    {
        contadorDeDisparos++;

        if (contadorDeDisparos > 5)
        {
            vidaJugador.añadirDaño(1);
        }

        if (prefabBala != null && _Cañon != null)
        {
            GameObject myBala = Instantiate(prefabBala, _Cañon.position, Quaternion.identity) as GameObject;

            Bala componenteDeLaBala = myBala.GetComponent <Bala>();

            if (transform.localScale.x < 0f)
            {
                componenteDeLaBala.direccion = Vector2.left;
            }
            else
            {
                componenteDeLaBala.direccion = Vector2.right;
            }
        }
    }
예제 #13
0
    public void disparar()
    {
        Bala obj = Instantiate(disparo);

        obj.transform.position = transform.position;
        obj.transform.forward  = transform.forward;
        obj.speed += inertia;
    }
예제 #14
0
 /// <summary>
 /// Recicla uma bala que já não é necessária no jogo
 /// </summary>
 /// <param name="bala">Instância de bala a reciclar</param>
 public static void removeBala(Bala bala)
 {
     if (balasAtivas.Contains(bala))
     {
         balasAtivas.Remove(bala);
         balasMortas.Add(bala);
     }
 }
예제 #15
0
파일: Torreta.cs 프로젝트: Zerhe/TanqueGame
 void Start()
 {
     velRot = 70;
     for (int i = 0; i < balasInstanciadas.Length; i++)
     {
         balasInstanciadas[i] = Instantiate(bala, punta.position, punta.rotation);
         infoBala             = balasInstanciadas[i].GetComponent <Bala>();
         infoBala.Desactivarse();
     }
 }
예제 #16
0
파일: Tanque.cs 프로젝트: idei/tanques
 private void Update()
 {
     if (Input.GetKeyDown(disparar))
     {
         GameObject copiaBala = GameObject.Instantiate(modeloBala);
         Bala       bala      = copiaBala.GetComponent <Bala>();
         bala.Disparar(fuego.transform);
         StartCoroutine(mostrarFuego());
     }
 }
예제 #17
0
    void shoot()
    {
        GameObject balaGO = (GameObject)Instantiate(balaprefab, firepoint.position, firepoint.rotation);
        Bala       bala   = balaGO.GetComponent <Bala>();

        if (bala != null)
        {
            bala.Seek(target);
        }
    }
예제 #18
0
    void Shoot()
    {
        GameObject bulletGO = (GameObject)Instantiate(bulletPrefab, bulletPoint.position, bulletPoint.rotation);
        Bala       bala     = bulletGO.GetComponent <Bala>();

        if (bala != null)
        {
            bala.damage = danyoPorNivel[nivelActual];
            bala.setTarget(target);
        }
    }
    void DisparTorreObjectiu()
    {
        //Iniciament de la bala ASSET
        GameObject balaTrajecte = (Instantiate(balaCano, puntDispar.position, puntDispar.rotation));
        Bala       balaTorre    = balaTrajecte.GetComponent <Bala>();

        //Passam parametre de balaTorre d'aquest objectiu
        if (balaTorre != null)
        {
            balaTorre.TrovarObjectiu(objectiu);
        }
    }
예제 #20
0
    private Bala DespacharBalaLibre()
    {
        Bala libre = null;

        for (int i = 0; i < balas.Length; i++)
        {
            libre = balas[i].GetComponent <Bala>();
            if (!libre.Disparada)
            {
                break;
            }
        }
        return(libre);
    }
예제 #21
0
    public void Shoot()
    {
        if (prefabBala != null && _Cañon != null && jugador != null)
        {
            GameObject myBala = Instantiate(prefabBala, _Cañon.position, Quaternion.identity) as GameObject;

            Bala componenteDeLaBala = myBala.GetComponent <Bala>();

            if (jugador.transform.localScale.x < 0f)
            {
                componenteDeLaBala.direccion = Vector2.left;
            }
            else
            {
                componenteDeLaBala.direccion = Vector2.right;
            }
        }
    }
예제 #22
0
파일: Torreta.cs 프로젝트: Zerhe/TanqueGame
 void Update()
 {
     if (Input.GetKey(apuntArriva))
     {
         transform.Rotate(Vector3.right * Time.deltaTime * -velRot);
     }
     if (Input.GetKey(apuntAbajo))
     {
         transform.Rotate(Vector3.right * Time.deltaTime * velRot);
     }
     if (Input.GetKey(apuntDerecha))
     {
         transform.Rotate(Vector3.up * Time.deltaTime * velRot, Space.World);
     }
     if (Input.GetKey(apuntIzquierda))
     {
         transform.Rotate(Vector3.up * Time.deltaTime * -velRot, Space.World);
     }
     if (Input.GetKeyDown(disparar))
     {
         int i = 0;
         while (i != balasInstanciadas.Length)
         {
             if (!balasInstanciadas[i].activeInHierarchy)
             {
                 infoBala = balasInstanciadas[i].GetComponent <Bala>();
                 infoBala.Activarse(punta.position, punta.rotation);
                 //balasInstanciadas[i].transform.position = punta.position;
                 //balasInstanciadas[i].transform.rotation = punta.rotation;
                 //balasInstanciadas[i].SetActive(true);
                 i = balasInstanciadas.Length;
             }
             else
             {
                 i++;
             }
         }
     }
 }
예제 #23
0
        public void dispararBala(int tipobala, int direccion)
        {
            TgcMesh instance = balamesh.createMeshInstance(balamesh.Name + "_");
            if (tipobala == 1)
            {

                instance.Scale = new Vector3(3f, 3f, 3f);

            }
            else
            {

                instance.Scale = new Vector3(2f, 2f, 2f);
            }

            var pos = this.Mesh.Position;
            var rot = this.Mesh.Rotation;
            Vector3 a = new Vector3(0,10,0);
            instance.Position = this.Mesh.Position +a ;

            instance.Rotation = this.Mesh.Rotation;
            //dispara a 90 grados
            if (direccion == 0)
            {
                instance.rotateY(Geometry.DegreeToRadian(270));
            }
            else
            {
                instance.rotateY(Geometry.DegreeToRadian(90));
            }

            var enemigos = new List<Barco>();
            if (tipobala == 1)
            {

                var bala = new Bala(instance, Danio, BarcosEnemigos, tipobala);
                balas.Add(bala);
            }
            else
            {

                var bala = new Bala(instance, Danio, BarcosEnemigos, tipobala);
                balas.Add(bala);
            }
        }
예제 #24
0
        public void disparar()
        {
            Bala disparo = new Bala(canion, logica);

            disparo.init("Canionero", canion); //el parametro es el nombre de la textura para el mesh
        }
예제 #25
0
파일: Controlador.cs 프로젝트: zapic0/pfc
        /// <summary>
        /// Mueve todo lo que hay en pantalla, la pelota, las balas y las raquetas
        /// </summary>
        public void Mover()
        {
            if (this.bola.Direccion)
            {
                this.bola.Posicion = this.NuevoPunto(this.bola.Posicion.Y + this.bola.Velocidad);
            }
            else
            {
                this.bola.Posicion = this.NuevoPunto(this.bola.Posicion.Y - this.bola.Velocidad);
            }
            bool acertado = false;

            if (this.balasJugador != null)
            {
                this.balasJugador.Mover(true);
                acertado = this.raquetaEnemigo.RecibirDisparo(balasJugador);
                if (acertado || this.balasJugador.Posicion.Y < 0)
                {
                    this.balasJugador = null;
                }
            }

            if (this.balasEnemigo != null)
            {
                this.balasEnemigo.Mover(false);
                acertado = this.raquetaJugador.RecibirDisparo(balasEnemigo);
                if (acertado || this.balasEnemigo.Posicion.Y > 250)
                {
                    this.balasEnemigo = null;
                }
            }

            if (bola.Posicion.X < raquetaEnemigo.Posicion.X)
            {
                raquetaEnemigo.Mover(-1, 0);
            }
            else
            {
                raquetaEnemigo.Mover(1, 0);
            }
            if (this.balasEnemigo == null)
            {
                this.balasEnemigo = raquetaEnemigo.Disparar();
            }
            if (destino.X > raquetaJugador.Posicion.X)
            {
                raquetaJugador.Mover(raquetaJugador.Velocidad, 0);
            }
            if (destino.X < raquetaJugador.Posicion.X)
            {
                raquetaJugador.Mover(-raquetaJugador.Velocidad, 0);
            }
            if (destino.Y > raquetaJugador.Posicion.Y)
            {
                raquetaJugador.Mover(0, raquetaJugador.Velocidad);
            }
            if (destino.Y < raquetaJugador.Posicion.Y)
            {
                raquetaJugador.Mover(0, -raquetaJugador.Velocidad);
            }
        }
예제 #26
0
파일: Controlador.cs 프로젝트: zapic0/pfc
 /// <summary>
 /// El Enemigo recibe un disparo
 /// </summary>
 /// <param name="balasera">Bala que le pega</param>
 public void PegarEnemigo(Bala balasera)
 {
     raquetaEnemigo.RecibirDisparo(balasera);
 }
예제 #27
0
파일: Controlador.cs 프로젝트: zapic0/pfc
 /// <summary>
 /// El jugador recibe un disparo
 /// </summary>
 /// <param name="balasera">Bala que le pega</param>
 public void PegarJugador(Bala balasera)
 {
     raquetaJugador.RecibirDisparo(balasera);
 }