Пример #1
0
        /// <summary>
        /// Mueve la pelota hacia el punto indicado,
        /// el movimiento hacia ese punto es lineal,
        /// en base a ese movimiento tambien hace la rotacion de la pelota
        /// </summary>
        private void Mover(Vector3 movimiento, float elapsedTime)
        {
            Vector3 lastsphereposition = sphere.Position;
            Vector3 lastboxposition    = box.Position;

            moveTo(movimiento);

            ColisionInfo colisionInfo = collisionManager.GetColisiones(box.BoundingBox);

            foreach (IColisionablePelota objetoColisionado in colisionInfo.getColisiones())
            {
                objetoColisionado.ColisionasteConPelota(this);

                if (hayTiro())
                {
                    //solo rebota con el tiro, con el pase no hace nada
                    if (tiro is TiroParabolicoSimple)
                    {
                        //aca uso el movimiento real, sin tener en cuenta la colision, para saber la direccion que toma el tiro en el rebote
                        tiro = new TiroParabolicoSimple(objetoColisionado.GetDireccionDeRebote(movimiento),
                                                        objetoColisionado.GetFuerzaRebote(movimiento, tiro.getFuerza()));
                    }
                }
                else if (hayMovimiento(movimiento))
                {
                    //aca uso el movimiento real, sin tener en cuenta la colision, para saber la direccion que toma el tiro en el rebote
                    tiro = new TiroParabolicoSimple(objetoColisionado.GetDireccionDeRebote(movimiento),
                                                    objetoColisionado.GetFuerzaRebote(movimiento, 50));
                }
            }

            //arma la transformacion en base al escalado + rotacion + traslacion
            sphere.Transform = getScalingMatrix() * getRotationMatrix(movimiento, elapsedTime) *
                               Matrix.Translation(sphere.Position);
        }
Пример #2
0
        public void Centro(Vector3 posicionJugador, float fuerza)
        {
            Vector3 direccion = posicionJugador - sphere.Position;

            direccion.Normalize();
            tiro = new TiroParabolicoSimple(direccion, fuerza);
            ReproducirSonidoPatear();
        }
Пример #3
0
 /// <summary>
 /// Tira la pelota hacia un punto al raz del piso
 /// </summary>
 /// <param name="posicionJugador"></param>
 /// <param name="fuerza"></param>
 public void Pasar(Vector3 posicionJugador, float fuerza)
 {
     this.tiro = new TiroLinealAUnPunto(sphere.Position, posicionJugador, fuerza);
 }
Пример #4
0
 private void resetTiro()
 {
     this.tiro = null;
 }
Пример #5
0
        /// <summary>
        /// Metodo para patear una pelota, recibe el vector de direccion y la fuerza.
        /// </summary>
        /// <param name="direccion"></param>
        /// <param name="fuerza"></param>
        public void Patear(Vector3 direccion, float fuerza)
        {
            tiro = new TiroParabolicoSimple(direccion, fuerza);

            ReproducirSonidoPatear();
        }
Пример #6
0
 private void resetTiro()
 {
     this.tiro = null;
 }
Пример #7
0
        /// <summary>
        /// Mueve la pelota hacia el punto indicado, 
        /// el movimiento hacia ese punto es lineal, 
        /// en base a ese movimiento tambien hace la rotacion de la pelota
        /// </summary>
        private void Mover(Vector3 movimiento, float elapsedTime)
        {
            Vector3 lastsphereposition = sphere.Position;
            Vector3 lastboxposition = box.Position;

            moveTo(movimiento);

            ColisionInfo colisionInfo = collisionManager.GetColisiones(box.BoundingBox);

            foreach (IColisionablePelota objetoColisionado in colisionInfo.getColisiones())
            {
                objetoColisionado.ColisionasteConPelota(this);

                if (hayTiro())
                {
                    //solo rebota con el tiro, con el pase no hace nada
                    if (tiro is TiroParabolicoSimple)
                    {
                        //aca uso el movimiento real, sin tener en cuenta la colision, para saber la direccion que toma el tiro en el rebote
                        tiro = new TiroParabolicoSimple(objetoColisionado.GetDireccionDeRebote(movimiento),
                            objetoColisionado.GetFuerzaRebote(movimiento, tiro.getFuerza()));
                    }
                }
                else if (hayMovimiento(movimiento))
                {
                    //aca uso el movimiento real, sin tener en cuenta la colision, para saber la direccion que toma el tiro en el rebote
                    tiro = new TiroParabolicoSimple(objetoColisionado.GetDireccionDeRebote(movimiento),
                        objetoColisionado.GetFuerzaRebote(movimiento, 50));
                }
            }

            //arma la transformacion en base al escalado + rotacion + traslacion
            sphere.Transform = getScalingMatrix() * getRotationMatrix(movimiento, elapsedTime) *
               Matrix.Translation(sphere.Position);
        }
Пример #8
0
        /// <summary>
        /// Metodo para patear una pelota, recibe el vector de direccion y la fuerza.
        /// </summary>
        /// <param name="direccion"></param>
        /// <param name="fuerza"></param>
        public void Patear(Vector3 direccion, float fuerza)
        {
            tiro = new TiroParabolicoSimple(direccion, fuerza);

            ReproducirSonidoPatear();
        }
Пример #9
0
 /// <summary>
 /// Tira la pelota hacia un punto al raz del piso
 /// </summary>
 /// <param name="posicionJugador"></param>
 /// <param name="fuerza"></param>
 public void Pasar(Vector3 posicionJugador, float fuerza)
 {
     this.tiro = new TiroLinealAUnPunto(sphere.Position, posicionJugador, fuerza);
 }
Пример #10
0
 public void Centro(Vector3 posicionJugador, float fuerza)
 {
     Vector3 direccion = posicionJugador - sphere.Position;
     direccion.Normalize();
     tiro = new TiroParabolicoSimple(direccion, fuerza);
     ReproducirSonidoPatear();
 }