Hi guys, I wondered if someone could confirm something for me. According to docs, transform.forward is forward in world space; what is it’s local space equivalent? i.e. if I want an object to move in the direction of it’s blue axis
Vector3 localForward = transform.worldToLocalMatrix.MultiplyVector(transform.forward);
is that what you are looking for?
Just use the Vector3 constants for local space directions.
(Vector3.forward, Vector3.up and Vector3.right)
You can use the TransformDirection to use it as local. (:
Vector3 forward = obj1.transform.TransformDirection(Vector3.forward);
// point
internal static void ToLocal(ref Vector3 worldPoint, ref Quaternion worldRotation, ref Vector3 worldPosition, out Vector3 localPoint)
{
localPoint = Quaternion.Inverse(worldRotation)(worldPoint - worldPosition);
}
internal static Vector3 ToLocal(ref Vector3 worldPoint, ref Quaternion worldRotation, ref Vector3 worldPosition)
{
return Quaternion.Inverse(worldRotation)(worldPoint - worldPosition);
}
internal static Vector3 ToLocal(Vector3 worldPoint, Quaternion worldRotation, Vector3 worldPosition)
{
return Quaternion.Inverse(worldRotation)*(worldPoint - worldPosition);
}
internal static void ToWorld(ref Vector3 localPoint, ref Quaternion worldRotation, ref Vector3 worldPosition, out Vector3 worldPoint)
{
worldPoint = worldRotation * localPoint + worldPosition;
}
internal static Vector3 ToWorld(ref Vector3 localPoint, ref Quaternion worldRotation, ref Vector3 worldPosition)
{
return worldRotation * localPoint + worldPosition;
}
internal static Vector3 ToWorld(Vector3 localPoint, Quaternion worldRotation, Vector3 worldPosition)
{
return worldRotation * localPoint + worldPosition;
}
// vector
internal static void ToLocal(ref Vector3 worldVector, ref Quaternion worldRotation, out Vector3 localVector)
{
localVector = Quaternion.Inverse(worldRotation)*worldVector;
}
internal static Vector3 ToLocal(ref Vector3 worldVector, ref Quaternion worldRotation)
{
return Quaternion.Inverse(worldRotation)*worldVector;
}
internal static Vector3 ToLocal(Vector3 worldVector, Quaternion worldRotation)
{
return Quaternion.Inverse(worldRotation)*worldVector;
}
internal static void ToWorld(ref Vector3 localVector, ref Quaternion worldRotation, out Vector3 worldPoint)
{
worldPoint = worldRotation * localVector;
}
internal static Vector3 ToWorld(ref Vector3 localVector, ref Quaternion worldRotation)
{
return worldRotation * localVector;
}
internal static Vector3 ToWorld(Vector3 localVector, Quaternion worldRotation)
{
return worldRotation * localVector;
}
i wanted to wake up this topic and i also want to wake up outsource info. Reddit - Dive into anything