Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

AddForce o position.velocity

Iniciado por Gestline, Febrero 04, 2016, 03:40:37 AM

Tema anterior - Siguiente tema
Buenas, Estoy desarrollando un pequeño juego en el cual un personaje que es impulsado verticalmente y le afecta la gravedad, necesita coger elementos para que le vuelva a empujar y no caerse por la misma gravedad.Estoy utilizando el método AddForce, y por lo que he estado investigando hay mucha polémica con este tema.Mi pregunta es si es posible mediante addforce y sus diferentes métodos obtener una velocidad constante, y que  si aplico una fuerza siempre llegue a la misma velocidad, una velocidad constante.Lo que ocurre es que cuando lleva una velocidad de 4 , y le aplico una fuerza, se eleva a 34 y si le vuelvo aplicar, mas velocidad.También lo he intentando con velocity pero al parecer los colider ya no son tan efectivos cuando empleo ese método.He realizado un script en el cual, cuando detecta un objeto le pongo la velocidad a 0, y le aplico la fuerza, pero si aplico 1500f, se queda muy corto el empuje, y si aplico 5000 demasiado.Algún consejo?Un saludo    

Desconozco la polémica de addforce. AddForce es aceleración y velocity es velocidad. Son conceptos totalmente diferentes. Es normal si le aplicas una aceleración que la velocidad aumente y luego disminuya debido a la interacción de la masa con la gravedad, sin hablar de si existe fricción. Yo me revisaría primero los libros de física porqué creo que tienes los conceptos erróneos.

Vale, entiendo.Estaba equivocado en el concepto del addForce.Lo de la polémica me refería en cuanto a mover un gameobject dentro de unity, con .velocity, translate, movepositio, addForce, o directamente el transform.posicion.x, y o z. En el script del objeto tengo este código. public void AplicarFuerza(float Fuerza)
    {            // Mirig es el rigidbody del Objeto
        Mirig.AddForce(new Vector3(0, Fuerza, 0));
        
    }
    void OnCollisionEnter(Collider other)
    {//coloco la velocidad a cero para que el personaje que esta ascendiendo se pare
        GetComponent<Rigidbody>().velocity = new Vector3(0, 0, 0);//aplico la fuerza que le dará el elemento con el que ha chocado, la variable FuerzaElemento es publica en el elemento chocado. Equivale a 1500f.
        AplicarFuerza(other.GetComponent<Elemento>().FuerzaElemento);//destruyo el elemento con el que ha chocado el personaje, dado que es una moneda y tiene que desaparecer.
        Destroy(other.gameObject);
    } EL colocar a cero la velocidad, es para cuando aplique la fuerza siempre sea el mismo impulso del personaje, y que no se vayan añadiendo fuerzas que luego hagan que el personaje suba mas y mas.Bien debería pasar esto que expongo, pero no. La primera fuerza que aplico, utilizando la misma función, sale perfecto, pero cuando coge la moneda se para al poner a cero la velocidad, y al aplicar la fuerza el impulso es minimo, y repito que es la misma fuerza con la que empieza.Alguna Idea. Gracias por el post anterior, y perdonar si resulto novato, soy primerizo con unity y sus físicas. Un saludo 

Etiquetas: