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