Noticias

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

Funcion Rigidbody.GetPointVelocity(Vector3)

Iniciado por ftejada, Julio 15, 2015, 04:38:46 PM

Tema anterior - Siguiente tema
Hola gente! a ver si me podeis sacar de la duda...
 
en la documentacion de la Scripting Api cuando entras en la explicacion de esta funcion viene un ejemplo de codigo. En él viene una variable llamada localWheelPos. Imagino que será la posicion local del gameObject que lleva este script... pero no estoy seguro....
 
Alguien puede aclararmelo? Es que estoy estudiando e intentando comprender las distintas funciones para el tema de fisicas de los Rigidbody, pero muchas de las explicaciones en la api no me aclaran muy bien para qué sirven algunas de estás funciones...

using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
    public Rigidbody rb;
    void Start() {
        rb = GetComponent<Rigidbody>();
    }
    Vector3 CalcWheelVelocity(Vector3 localWheelPos) {
        return rb.GetPointVelocity(transform.TransformPoint(localWheelPos));
    }
}

Aparte hay funciones como Rigidbody.AddForceAtPosition que no me termina de quedar muy claro para qué sirve exactamente
¿Alguna explicación clara??
 
 
Saludos y gracias de antemano.

Hola Ftejada, el ejemplo que estas mirando es de un ejemplo claro de una rueda...de coche de lo que sea.
 
La localWheelPos se refiere a la ubicación actual de la rueda en si.
 
Recoje el rigid de la rueda y la velocidad de la misma en su posición.
 
En pocas palabras que mueve la rueda
 
No se si me he explicado muy claro pero básicamente es eso
 
Saludos
 
P.D lo del el  Rigidbody.AddForceAtPosition  es para dar velocidad a la "rueda o l que sea eso" , es como cuando crear un shooter y coges el rigid de la bala y le das mas velocidad.
 
Claro esta que hay que aplicar el codigo adecuado después.
 
Un ejemplo:

using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
    void ApplyForce(Rigidbody body) {
        Vector3 direction = body.transform.position - transform.position;
        body.AddForceAtPosition(direction.normalized, transform.position);
    }
}

Julio 16, 2015, 12:26:39 PM #2 Ultima modificación: Julio 16, 2015, 12:29:03 PM por ftejada
Cita de: ramunda date=1437031186 
Hola Ftejada, el ejemplo que estas mirando es de un ejemplo claro de una rueda...de coche de lo que sea.
 
La localWheelPos se refiere a la ubicación actual de la rueda en si.
 
Recoje el rigid de la rueda y la velocidad de la misma en su posición.
 
En pocas palabras que mueve la rueda
 
No se si me he explicado muy claro pero básicamente es eso
 
Saludos
 
P.D lo del el  Rigidbody.AddForceAtPosition  es para dar velocidad a la "rueda o l que sea eso" , es como cuando crear un shooter y coges el rigid de la bala y le das mas velocidad.
 
Claro esta que hay que aplicar el codigo adecuado después.
 
Un ejemplo:

using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
    void ApplyForce(Rigidbody body) {
        Vector3 direction = body.transform.position - transform.position;
        body.AddForceAtPosition(direction.normalized, transform.position);
    }
}

Hola ramunda! gracias por contestar...
 
la verdad es que no termino de verlo claro... y necesito comprenderlo bien para saber para qué me puede servir esa funcion de Rigidbody.GetPointVelocity(Vector3)...
 
Lo que me respondiste y que te he señalado en rojo aun me cruje.... a ver si lo he entendido bien...
 
Por lo que creo entender dicha funcion, (GetPointVelocity(...)), ¿¿lo que hace es devolver un vector3(direccion y sentido), con la fuerza que influencia a un rigidbody en el frame en el que se utiliza?? Pero no creo que sea eso ya que si no, como parametro debería recibir un rigidbody en vez de un vecto3.... Pero no se....
 
Y respecto a lo de la funcion Rigidbody.AddForceAtPosition entiendo que es para darle fuerza/velocidad a lo que sea.... pero no me termina de quedar clara tampoco. En el ejemplo que me ponias...

    void ApplyForce(Rigidbody body) {
        Vector3 direction = body.transform.position - transform.position;
        body.AddForceAtPosition(direction.normalized, transform.position);
    }

la funcion recibe un rigidbody al que le vamos a aplicar la fuerza/velocidad con el AddForceAtPosition. El tema está en que la restas que haces para sacar la direccion, toma la position del rigidbody que queremos desplazar y la posicion de? supongo que del gameobject que contiene el script.
 
Y aquí viene mi duda.... al body que le estamos diciendo exactamente cuando le aplicamos la funcion body.AddForceAtPosition(...)???? que se le aplique una fuerza desde su propia posicion en una direccion que va determinada con el vector normalizado "direction"?????? ¿Entonces para qué sirve el parametro que le pasamos a la funcion transform.position?
 
La verdad es que no me queda claro.....
 
 
Ruego me lo aclareis lo más posible... con una explicación para cortitos como yo. A ver si así me entero....
 
Saludos y gracias...

Etiquetas: