ну и если придираться, то у вас там глобальная переменная bullet и внутри методов тоже bullet. чтоб не запутаться - назвали бы bulletGO (если что сокращение от GameObject) или как о так.
void OnTriggerEnter(Collider bullet)
{
if (bullet.CompareTag("Enemy"))
{
e = true;
Debug.Log("E");
}
}
тут параметр функции Collider bullet - коллайдер. Точнее ссылка на коллайдер. у колайдера, как и у GameObject ( а еще точнее именно от него) есть тэг, слой и прочие атрибуты.
а вот в том проблемном месте
void OnCollisionEnter(Collision bullet)
{
if (bullet.CompareTag("Ring"))
{
r = true;
Debug.Log("R");
}
}
Параметром является информация о коллизии - Collision bullet.
В этой информации есть ссылка на коллайдер, который вызвал коллизию - bullet.collider (В вашем случае эта ссылка на коллайдер, для проверки тегов и прочего как раз и нужна).
А кроме коллайдера, там еще точки коллизий есть и нормаль, и наверно что-то еще не помню))
Надеюсь понятнее стало.
и еще раз повторю про названия)) к примеру кусочек с кодом про коллизию
void OnCollisionEnter(Collision collisionInfo)
{
if (collisionInfo.collider.CompareTag("Ring"))
{
r = true;
Debug.Log("R");
}
}