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