TGViewer
Dev Math Dev Math @easy_dev_math · 615 subscribers
Post #35 575
🕳️ Sweep test и CCD: когда объект «проваливается» сквозь стену

Снаряд летит быстро. Кадр 1 — перед стеной. Кадр 2 — за стеной.
Физика не поймала пересечение — проверяла только конечную позицию.
Это туннелирование (tunneling).

Решение 1: SphereCast / RaycastAll
Двигай не точку, а луч или объём вдоль вектора движения.

RaycastHit hit;
if (Physics.SphereCast(
transform.position,
col.radius,
velocity.normalized,
out hit,
velocity.magnitude * Time.fixedDeltaTime))
{
transform.position = hit.point + hit.normal * col.radius;
velocity = Vector3.Reflect(velocity, hit.normal) * bounciness;
}
else transform.position += velocity * Time.fixedDeltaTime;


Решение 2: CCD в Rigidbody
Rigidbody → Collision Detection → Continuous (для объекта)
или Continuous Dynamic (если сталкивается с другими быстрыми объектами).

Когда какой режим:
→ Discrete — медленные объекты, декор
→ Continuous — быстрые объекты (снаряды) vs статичные стены
→ Continuous Dynamic — быстрые vs быстрые

CCD дороже по CPU. Включай только там, где нужно.

#мат_геймдев #МатРазбор #физика #туннелирование
  • 👍 4
  • 🔥 3
  • ❤ 2
More from @easy_dev_math
  1. Sep 28, 2026🤔 Как проверить свою идею? Сделал небольшое видео о том, как проверить свою идею. Самый п…
  2. Sep 28, 2026🤔 Почему так важен онбординг в игре? По следам разбора давайте на этой неделе разберем те…
  3. Sep 26, 2026🤨 Разбор игры — «Алхимик: магазин волшебных зелий» https://yandex.ru/games/#app=582380 Чт…
  4. Sep 25, 2026🥴 Кина не будет (сегодня) У меня техническая накладка. Форсмажор. Поэтому прошу понять и…
  5. Sep 24, 2026😁 Почему игроки фармят пиксели https://dev-math.ru/articles/grind/ Дописал статью про воп…
  6. Sep 23, 2026⚡️ Как сделать игру? Подумал что интересного можно сделать и придумал. Решил описать больш…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →