Соприкосновение пуль и врагов в unity не работает, хотя присутствует и коллайдер и rigitbody

Есть объект player, который может стрелять пулями. На пулях висит circle collider(Is Trigger включен) и rigidbody 2d , гравитация нулевая. Также есть враги с capsule collider(Is Trigger включен) и точно таким же rigidbody 2d. При соприкосновении пуля и враг должн уничтожиться, но соприкосновения просто не происходит. Объекты находятся в одной плосткости(0 по оси z). Не могу найти ошибку. Код пули Bullet.cs:

using UnityEngine;

public class Bullet : MonoBehaviour
{
public float speed = 5f;
public Rigidbody2D rb;
private float destroyTime = 3f;
// Start is called before the first frame update
void Start()
{
    Invoke("DestroyBullet", destroyTime);
    Vector3 dir = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
    rb.velocity = dir * speed * Time.deltaTime;
}
private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.CompareTag("Enemy"))
    {
        DestroyBullet();
        Debug.Log("Попал");
    }
}

private void DestroyBullet()
{
    Destroy(this.gameObject);
}
}

Код врага Enemy.cs:

using UnityEngine; 
public class Enemy : MonoBehaviour
{
[SerializeField] private int lives = 5; // count of lives

private Rigidbody2D rb;
private SpriteRenderer sprite;

private void Awake()
{
    rb = GetComponent<Rigidbody2D>();
}

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.CompareTag("Player"))
    {
        Player.Instance.Die();
    }
    if (collision.gameObject.CompareTag("Bullet"))
    {
        Die();
    }
}
private void Die()
{
    Destroy(this.gameObject);
}
}

Возможно пригодится код оружия(откуда стреляют) Weapon.cs:

using UnityEngine;

public class Weapon : MonoBehaviour
{
[SerializeField] private float offset = 0f;
public Transform firePoint;
public GameObject bullet;
public float timeShot;
public float startTime;

public static Weapon Instance { get; set; }

private void Awake()
{
    Instance = this;
}

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

    Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
    float rotateZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
    transform.rotation = Quaternion.Euler(0f, 0f, rotateZ + offset);

    if (timeShot <= 0)
    {
        if (Input.GetButtonDown("Fire1"))
        {
            Shoot();
            timeShot = startTime;
        }
    }
    else
    {
        timeShot -= Time.deltaTime;
    }
}
private void Shoot()
{
    Instantiate(bullet, firePoint.position, firePoint.rotation);
}
}

Общий вид

На скрине видно, что коллайдеры соприкасаются


Ответы (1 шт):

Автор решения: Дмитрий Литвиненко

Ответ нашелся: при включенных триггерах объекты не взаимодействуют с помощью OnCollision2D. Нужно либо снять все триггеры(что я и сделал), либо использовать OnTriggerEnter2D.

→ Ссылка