Несуществующее столкновение обнаружено с помощью OnCollisionEnter () - PullRequest
2 голосов
/ 03 июня 2019

Я пытаюсь сделать липкую гранату, отключив ее твердое тело при столкновении, используя OnCollisionEnter(). Однако, OnCollisionEnter() срабатывает, когда явно не происходит столкновения, как вы можете видеть на этом изображении:

enter image description here

Это заставляет мою гранату зависать в воздухе. Я подозреваю, что это связано с отсутствием синхронизации между физическим циклом и циклом рендеринга. Кроме того, моя стандартная «нелипкая» граната использует ту же модель и работает отлично.

Я уже попробовал следующее:

  • Убедитесь, что нет других коллайдеров, которые могли бы вызвать мою гранату «держаться в воздухе»

  • Используйте взамен OnTriggerEnter(). Результат немного лучше, но проблема в том, что он стреляет слишком поздно, только когда граната окажется внутри препятствия или врага.

  • Добавить твердое тело и непрерывное обнаружение столкновений для всех объектов

  • Tweak PhysicsManager.DefaultContactOffset от 0,01 до 0,001, как рекомендует Eliasar

  • Переключение с «PCM» на «Генерация устаревших контактов»

Ничего из этого не сработало, поэтому я немного отчаялся. Заранее спасибо за помощь!

Код, который я использую для столкновения с гранатой при столкновении:

void OnCollisionEnter(Collision c) {
   rigidbody.isKinematic = true;
   transform.parent = c.transform;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...