Test Rigidbody SweepTest

Rigidbody Sweeptest Test



Podobnie jak w przypadku projekcji Physics, SweepTest może bezpośrednio rzutować bieżącą kolizję

Ale niestety jego obsługa MeshCollider nie jest zbyt dobra, musisz sprawdzić Convex



Projekcja jest taka sama jak fizyka, o ile zderzacz jest dodany, niezależnie od tego, czy wyzwalacz jest zaznaczony, czy nie, będzie rzutowany na



Ponadto, jeśli chcesz przesunąć sztywną pozycję ciała dla SweepTest, możesz wywołać .position, aby zmienić pozycję z wyprzedzeniem



Na przykład w mojej grze postać teleportuje się do określonych współrzędnych. W tym momencie ocenia się, czy przekracza ścianę. Oto kod, którego użyłem do testów, który może poprawić kolizję znaków:

using UnityEngine public class SweepTest : MonoBehaviour { public Rigidbody rigidbodyComponent void OnEnable() { RaycastHit raycastHit if (rigidbodyComponent.SweepTest(transform.forward, out raycastHit, 10)) { Debug.Log('Contact') var raycastPoint = raycastHit.point var closesPoint = rigidbodyComponent.ClosestPointOnBounds(raycastPoint) rigidbodyComponent.transform.position += raycastPoint - closesPoint } else { Debug.Log('Failure') } } }

Przetestuj (przed i po wykonaniu skryptu):



Przedrukowano pod adresem: https://www.cnblogs.com/hont/p/5215457.html