Объявление
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);
}
}