Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Temas - combo_heroe

#1
Hola tengo un calse camara que utilizo en mi juego, la cual esta basada de ejemplos de internet

public class Camera
    {
        public Matrix View;

        public Vector2 Posicion;

        public Vector2 CentroPantalla;

        public float Scala;

        private Rectangle rect;

        private Vector2 vel;

        public Camera() {
            CentroPantalla =
                        new Vector2(400,240);
            Posicion = Vector2.Zero;


            View = Matrix.Identity;

            Scala = 1;

            rect = new Rectangle(-400, -240, 800+400, 480+240);
        }

        public Camera(Viewport viewport, Vector2 posicion) {
            CentroPantalla =
                    new Vector2(viewport.Width / 2f, viewport.Height / 2f);
            Posicion = posicion;


            View = Matrix.Identity;

            Scala = 1;

            rect = new Rectangle(-400, -240, (int)(viewport.Width*1.5f), (int)(viewport.Height*1.5f));

        }

       

        public void Mover(float x, float y)
        {
            System.Diagnostics.Debug.WriteLine("Mover()");

            if (Math.Abs(vel.Length()) != 0)
            {
                System.Diagnostics.Debug.WriteLine("Mover Detenido");

                return;
            }

           
                //Posicion.X -= x;
                //Posicion.Y -= y;

                vel.X = x;
                vel.Y = y;
           
            else
            {
                System.Diagnostics.Debug.WriteLine(string.Format("X:{0} Y:{1}", (Posicion.X - x), (int)(Posicion.Y - y)));
            }


        }

        public Vector2 ScreenToWorld(Vector2 screenpoint) {
            return screenpoint - (CentroPantalla - Posicion);
        }

        public void Update()
        {           

            Posicion -= vel;

            vel /= 2;

            if (vel.Length() < .2f) {
                vel = Vector2.Zero;
            }

            View = Matrix.CreateTranslation(new Vector3(-Posicion.X, -Posicion.Y, 0))
                * Matrix.CreateRotationZ(0)
                * Matrix.CreateScale(new Vector3(Scala, Scala, 1))
                * Matrix.CreateTranslation(new Vector3(800 * 0.5f, 480 * .5f, 0))
                ;

           

           


        }


y en el Update tengo

if (TouchPanel.IsGestureAvailable) {

                var gesto = TouchPanel.ReadGesture();
                if (gesto.GestureType == GestureType.FreeDrag) {

                    //System.Diagnostics.Debug.WriteLine("p" + gesto.Position + "p2"+ gesto.Position2 + "d" + gesto.Delta + "d2" + gesto.Delta2 + "t" + gesto.Timestamp);
                   
                    //camara.Posicion -= gesto.Delta; primero intente este
                    Vector2 tmp = gesto.Delta * 3;
                    camara.Mover(tmp.X, tmp.Y);
                }
            }


La idea es que se mueva la camara acorde al movimiento del toque en la pantalla, pero no tengo buenos resultados de ninguda de las dos formas que he intentado.

en la primera cambiaba simplemente la posicion, es mas o menos decente cuando se da un drag corto (aunque el movimiento es muy de golpe), pero si trato de pulsar y sostener y mover levemente la camara, esta se vuelve loca y termina su movimiento varios segundos despues.

y en la segunda como se invoca muchas veces el metodo mover, la camara cambia de posicion por pasos, es decir, cuando se mueve del punto A al B da 3 o 4 pasos, donde la camara se mueve, se detiene por la condicion de velocidad, se vuelve a invocar Mover, y eso es terrible para la jugabilidad.

¿que puedo hacer?

muchas gracias por sus respuestas
#2
Hola buen dia comunidad.
Lo que pasa es que quiero dibujar o rellenar una area basada en puntos, vectores etc con una textura, como si le diera un rellenar

por ejemplo tengo esta textura


ahora tengo unos puntos en la pantalla que son los limites de la imagen


quiero que quede algo asi



¿como lo puedo lograr?
Muchas gracias de antemano
#3
XNA / Obtener Vector2 a partir de Vector3
14 de Septiembre de 2012, 12:25:20 AM
Hola el asunto aqui es que estoy desarrollando un juego en 3d y quiero que se dibuje en pantalla un sprite que es en 2D, pero lo que quiero hacer, es ponerlo encima de mis modelos en 3d, lo que tengo es la forma de acceder al Vector3 de mi modelo, pero no se como puedo convertirlo a un vector2 que repessente la posicion actual en la pantalla, para ahi dibujar lo que quiero.

si me pudieran ayudar se los agradeceria bastante.

Saludos.
#4
XNA / Problema con Orden De dibujo
13 de Abril de 2012, 07:05:22 PM
Hola estaba realizando una prueba de un motor de fisica, la pruba consiste en poner un numero n de cubos apilados y dejar caer desde un punto mas alto cada cierto tiempo una Esfera, por lo que mi Orden de dibujo es primero dibujar la lista de cubos y despues la lista de bolas, el problema que vi es que algunas ocasiones al chocar las bolas se van detras de las cajas (desde la vista de la camara), pero por el orden de dibujo se siguen pintando

Como  pueso solucionar esto???. Muchas Gracias por sus respuestas





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.