Unity2D - игнорировать столкновение с краевым коллайдером - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь, чтобы мой игрок игнорировал столкновение с краевым коллайдером на платформе, которая у меня есть.

Вот скрипт, который я добавил в плеер

public class TestMovement : MonoBehaviour
{
public Rigidbody2D ball;
private GameObject purplePlat1;
private GameObject player;

// Start is called before the first frame update
void Start()
{
    purplePlat1 = GameObject.Find("purple_plat");
    player = GameObject.Find("circle-png-44659");

    ball = GetComponent<Rigidbody2D>();
    ball.AddForce(new Vector2(0, 10), ForceMode2D.Impulse);
    Debug.Log("start");
}

// Update is called once per frame
void Update()
{

}

void OnCollisionEnter2D(Collision2D collision)
{

    Physics2D.IgnoreCollision(purplePlat1.GetComponent<EdgeCollider2D> 
  (), GetComponent<CircleCollider2D>());
    Debug.Log("collision");

}
}

Мяч все еще ударяет по платформе. Я подтвердил, что метод oncollisionenter срабатывает.

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Что вы можете сделать, это создать маску слоя для различных типов игровых объектов. Затем откройте настройки Physics2D.

Physics2D settings

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

Matrix

0 голосов
/ 28 марта 2019

Вы можете использовать layer систему Unity, чтобы избежать коллизий между обоими.Установите слой для игрока, а другой - для края и снимите флажок между ними.

...