Описание
Непрерывное обнаружение столкновений включено для столкновений со статической геометрией сетки.
Столкновения будут обнаружены для любой статической геометрии сетки на пути этого Rigidbody, даже если столкновение произойдет между двумя шагами FixedUpdate. Статическая геометрия сетки — это любой MeshCollider, к которому не присоединено Rigidbody. Это также предотвратит прохождение Rigidbody, установленного в режим ContinuousDynamic, через это Rigidbody.
//Этот скрипт позволяет переключать режим обнаружения столкновений по нажатию клавиши пробела
//Прикрепите этот скрипт к GameObject
//Нажмите GameObject, перейдите к его инспектору и нажмите кнопку Добавить компонентКнопку. Затем перейдите в раздел Физика>Rigidbody.
using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
Rigidbody m_Rigidbody;
void Start()
{
m_Rigidbody = GetComponent<Rigidbody>();
}
public void Update()
{
//Press the space key to switch the collision detection mode
if (Input.GetKeyDown(KeyCode.Space))
SwitchCollisionDetectionMode();
}
//Switch between the different Collision Detection Modes
void SwitchCollisionDetectionMode()
{
switch (m_Rigidbody.collisionDetectionMode)
{
//If the current mode is continuous, switch it to continuous dynamic mode
case CollisionDetectionMode.Continuous:
m_Rigidbody.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
break;
//If the current mode is continuous dynamic, switch it to discrete mode
case CollisionDetectionMode.ContinuousDynamic:
m_Rigidbody.collisionDetectionMode = CollisionDetectionMode.ContinuousSpeculative;
break;
// If the curren mode is continuous speculative, switch it to discrete mode
case CollisionDetectionMode.ContinuousSpeculative:
m_Rigidbody.collisionDetectionMode = CollisionDetectionMode.Discrete;
break;
//If the current mode is discrete, switch it to continuous mode
case CollisionDetectionMode.Discrete:
m_Rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;
break;
}
}
}