Я пытаюсь получить персонаж игрока в двумерном прокрутке, чтобы игнорировать столкновения с конкретными объектами в массиве, когда он выполняет тире. Но моя первая попытка не работает. Нет ошибок, это просто не работает. Персонаж все еще сталкивается с конкретными объектами, пока он лишается.Я правильно использую GetComponents и IgnoreCollision?
private Collider2D col;
public Collider2D[] dashMasks;
void Awake()
{
col = GetComponent<BoxCollider2D>();
dashMasks = GetComponents<Collider2D>();
}
void Update()
{
if(dashing)
{
foreach(Collider2D mask in dashMasks)
{
Physics2D.IgnoreCollision(col, mask);
}
}
}
ли я сделать GetComponenets
вызов неправильно или же я делаю IgnoreCollision
неправильно, или, может быть, оба?
Где находится 'dashing' и что происходит в' Update() ', когда это правда? Кажется, что все коллайдеры находятся в одном и том же gameObject. – user3071284
Dashing является частью контроллера плеера, доступ к которому осуществляется из другого сценария. Я оставил эту полную функцию ради краткости. Когда тире верно, это означает, что игрок находится в лихорадочном состоянии, и все это работает. Первоначально у меня был игрок, игнорирующий столкновение, в то время как лихой просто отключив его коллайдер в то время как лихой, но это может привести к тому, что игрок упадет со сцены, поэтому мне нужно установить, чтобы он игнорировал столкновения только с определенными объектами, – user3776884
OK. Вызывается ли 'Physics2D.IgnoreCollision'? Добавьте 'Physics2D.GetIgnoreCollision()' под этим вызовом и распечатайте его. – user3071284