CollisionDetectionMode.ContinuousDynamic
Описание
Непрерывное обнаружение столкновений включено для столкновений со статической и динамической геометрией.
Не даёт этому Rigidbody проходить сквозь статическую геометрию мешей и сквозь другие Rigidbody с включённым непрерывным обнаружением столкновений, когда он движется быстро. Это самый медленный режим обнаружения столкновений, и его следует применять лишь для отдельных быстро движущихся объектов.
//This script allows you to switch collision detection mode at the press of the space key //Attach this script to a GameObject //Click the GameObject, go to its Inspector and click the Add Component Button. Then, go to Physics>Rigidbody.
using UnityEngine; using UnityEngine.UI; using UnityEngine.InputSystem; 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 (Keyboard.current.spaceKey.wasPressedThisFrame) 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 continuous speculative 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; } } }