Объявление
public static void IgnoreCollision(Collider2D collider1, Collider2D collider2, bool ignore = true);Параметры
collider1 | Первый коллайдер для сравнения с collider2 . |
collider2 | Второй коллайдер для сравнения с collider1 . |
ignore | Должны ли коллизии/триггеры между collider1 и collider2 игнорироваться или нет. |
Описание
Заставляет систему обнаружения столкновений игнорировать все коллизии/триггеры между collider1
и collider2
.
Игнорирование столкновений относится к любому типу взаимодействия между выбранными коллайдерами, т. е. никаких столкновений или взаимодействия триггеров не произойдет. Слои столкновения сначала проверяются, чтобы увидеть, что два слоя могут взаимодействовать, и если нет, то взаимодействия не происходит. После этого будет происходить игнорирование определенных взаимодействий коллайдеров.
IgnoreCollision имеет несколько ограничений:
- Он не является постоянным. Это означает, что состояние игнорирования коллизии не будет сохранено в редакторе при сохранении сцены.
- Игнорировать столкновение можно только для коллайдеров в активных игровых объектах.
При отключении коллайдера состояние IgnoreCollision будет потеряно, и вам придется снова вызывать Physics2D.IgnoreCollision.
Смотрите так же: Physics2D.GetIgnoreCollision, Physics2D.IgnoreLayerCollision.
using UnityEngine;
public class Example : MonoBehaviour
{
// Создать экземпляр пули и заставить ее игнорировать столкновения с этим объектом.
Transform bulletPrefab;
void Start()
{
var bullet = Instantiate(bulletPrefab) as Transform;
Physics2D.IgnoreCollision(bullet.GetComponent<Collider2D>(), GetComponent<Collider2D>());
}
}