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

Это заставляет мою гранату зависать в воздухе. Я подозреваю, что это связано с отсутствием синхронизации между физическим циклом и циклом рендеринга. Кроме того, моя стандартная «нелипкая» граната использует ту же модель и работает отлично.
Я уже попробовал следующее:
Убедитесь, что нет других коллайдеров, которые могли бы вызвать мою гранату
«держаться в воздухе»
Используйте взамен OnTriggerEnter()
. Результат немного лучше, но проблема в том, что он стреляет слишком поздно, только когда граната окажется внутри препятствия или врага.
Добавить твердое тело и непрерывное обнаружение столкновений для всех объектов
Tweak PhysicsManager.DefaultContactOffset от 0,01 до 0,001, как рекомендует Eliasar
Переключение с «PCM» на «Генерация устаревших контактов»
Ничего из этого не сработало, поэтому я немного отчаялся. Заранее спасибо за помощь!
Код, который я использую для столкновения с гранатой при столкновении:
void OnCollisionEnter(Collision c) {
rigidbody.isKinematic = true;
transform.parent = c.transform;
}