Проблема в том, что некоторые объекты не обнаруживаются коллайдерами. Я собираю объекты этих игровых объектов, чтобы не создавать их экземпляры в данный момент. Это объекты, объединенные волнами, по 20-30 объектов на волну.
Проблема здесь: Первая волна - все обнаруживается при столкновении коллайдера. Тогда вторая и остальные волны игнорируются коллайдером. Некоторые из них могут быть обнаружены, но большинство игнорируются. Вторая волна не начинается, пока все игровые объекты в первой волне не наберут setActive(false)
, когда они достигнут коллайдера в OnCollisionEnter
.
Ничего особенного не происходит при отключении или включении пула объектов, я проверил оба игровых объекта в волне 1 и 2, и они оба одинаковые, жесткие тела и коллайдеры все включены с настройками по умолчанию со времени первого появления.
Чего мне не хватает? Почему работают только игровые объекты из пула первой волны, а не повторно используемые.
private void OnCollisionEnter(Collision collision)
{
if (collision.transform.GetChild(0).gameObject.tag == "Enemy")
{
Debug.Log("P: " + collision.contacts[0].point + " | N: " + collision.contacts[0].normal);
// Allow ALL Enemies to not be stopped by Impact
Physics.IgnoreCollision(collision.collider, GetComponent<Collider>());
}
}
Код пула объектов для вызова
GameObject enemy = ObjectPooler.SharedInstance.GetPooledObject("Enemy");
if (enemy!= null)
{
enemy.SetActive(true);
}
Код пула объектов для уничтожения
enemy.SetActive(false);
PS Я создал еще один пост об этой проблеме, но в этом посте я думал, что это связано с другой проблемой, но это должна быть эта проблема, потому что независимо от того, сколько объектов у меня в первой волне, все они обнаруживаются. Только 2, 3, 4 волны игнорируются. Только некоторые из этих волн обнаруживаются, и я думаю, что обнаруженные - это новые игровые объекты, которые еще не использовались пулом объектов. Пожалуйста, помогите