Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Physics.IgnoreLayerCollision

Объявление

public static void IgnoreLayerCollision(int layer1, int layer2, bool ignore = true);

Описание

Заставляет систему обнаружения столкновений игнорировать все конфликты между любым коллайдером в layer1 и любым коллайдером в layer2.

Обратите внимание, что IgnoreLayerCollision сбрасывает состояние срабатывания затронутых коллайдеров, поэтому вы можете получать сообщения OnTriggerExit и OnTriggerEnter в ответ на этот вызов.

Вы можете установить значения по умолчанию для вашего проекта для любых комбинаций слоев в инспекторе физики.

Смотрите так же: Physics.GetIgnoreLayerCollision,Physics.IgnoreCollision.

//Прикрепите этот скрипт к GameObject и убедитесь, что он имеет компонент Rigidbody //Создайте второй GameObject с Коллайдером для проверки столкновений. Убедитесь, что оба GameObject одинаковы по осям y и z. //Этот скрипт останавливает коллизии между двумя слоями (в данном случае слоями 0 и 8). Настройте новый слой в окне Инспектора, выбрав параметр Слой. //Далее нажмите «Добавить Слой». Затем назначьте этот слой второму GameObject. //В Mode нажмите левую и правую клавиши, чтобы переместить Rigidbody влево и вправо. Если ваш первый GameObject находится на уровне 0, а второй GameObject — на уровне 8, коллизия игнорируется. using UnityEngine; public class Example : MonoBehaviour { //Set the speed number in the Inspector window public float m_Speed; Rigidbody m_Rigidbody; void Start() { // Извлекаем компонент Rigidbody из GameObject m_Rigidbody = GetComponent<Rigidbody>(); //Ignore the collisions between layer 0 (default) and layer 8 (custom layer you set in Inspector window) Physics.IgnoreLayerCollision(0, 8); } void Update() { // Нажмите вправо, чтобы переместить GameObject вправо. Убедитесь, что вы установили высокую скорость в окне инспектора. if (Input.GetKey(KeyCode.RightArrow)) { m_Rigidbody.AddForce(Vector3.right * m_Speed); } // Нажмите клавишу со стрелкой влево, чтобы переместить GameObject влево if (Input.GetKey(KeyCode.LeftArrow)) { m_Rigidbody.AddForce(Vector3.left * m_Speed); } } // Обнаружение столкновения void OnCollisionStay(Collision collide) { // Output the name of the GameObject you collide with Debug.Log("I hit the GameObject : " + collide.gameObject.name); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3