Hola amigos.
Estoy haciendo una aplicación donde requiero conocer el punto de colisión de una esfera con otro objeto. hasta allí es sencillo.
Dada una posición inicial y la dirección del objeto se puede obtener el punto de colisión con la instrucción RayCastInteserct, el primer paso es cambiar la referencias de coordenadas de las globales, hacia el local.
Todo esto funciona perfectamente, incluso si el objeto de destino tiene rotaciones, sin embargo si el objeto de destino tiene una traslación, los cálculos ya no dan.
El ejemplo con la Objeto.position.Point := Point3D(0,1,0); ya no lo puede detectar.
Alguna idea? Gracias.
Position := Objeto.AbsoluteToLocal3D(Position); FDir := Vector3D(Objeto.AbsoluteToLocalVector(FDir)); Objeto.RayCastIntersect(Position, FDir, HitPos); Sphere1.Position.Point := Objeto.LocalToAbsolute3D(Objeto.AbsoluteToLocal3D(HitPos));