He estado tratando de hacer un controlador de personajes con cinemática inversa, y estoy usando lanzamientos de rayos para determinar los puntos objetivo a los que se unirán los huesos, pero tengo algunos problemas con el cambio de la información de golpe de lanzamiento de rayos.
¿Qué está pasando exactamente? Bueno, estoy disparando un raycast en la dirección en la que mira el punto de raycast. Una vez que toca el suelo, establece la posición de anclaje en la posición del punto de impacto. Excepto por el hecho de que la posición de mi punto de anclaje es completamente diferente a la posición de mi punto de golpe, incluso después de la proyección de rayos.
public Transform[] anchors; void RayOut() { RaycastHit hit; // Create Ray Instance if (Physics.Raycast(transform.position, transform.forward, out hit)) // Launch The Instance { Debug.DrawLine (transform.position, hit.point); switch (gameObject.name) // Check This Name & Assign Positions { case "TR": anchors[0].position = hit.transform.position; break; case "TL": anchors[1].position = hit.transform.position; break; case "BL": anchors[2].position = hit.transform.position; break; case "BR": anchors[3].position = hit.transform.position; break; } } } private void Update() { if (Input.GetKeyDown(KeyCode.Space)) RayOut(); }El punto donde la línea blanca se cruza con el suelo es el punto esperado en el que debería estar el ancla, pero las tres flechas están donde realmente está.
Descubrí el motivo, estaba usando transform.position , cuando en realidad se supone que es point . (Crédito a ps2goat por encontrarlo también).