Физика в Roblox: детали, якоря и столкновения

Roblox считает физику сам, и это подарок и проблема одновременно: собранный дом может развалиться на первом же запуске, если детали не закреплены.

Три свойства, которые решают почти всё

  • Anchored — деталь прибита к месту: не падает и не двигается
  • CanCollide — сквозь деталь можно пройти или нельзя
  • Massless — деталь не добавляет веса модели, полезно для украшений на движущихся объектах

Почему постройка разъехалась

В Studio детали стоят там, где их поставили, потому что физика не считается. На запуске она включается — и всё незакреплённое падает.

Лечится это скучно и надёжно: декорации и стены закрепляют, а соединяют детали не «на глаз», а сварками WeldConstraint. Дверь, платформа и качели держатся на ограничениях HingeConstraint и PrismaticConstraint, а не на постоянном пересчёте позиции в цикле.

Материалы и трение

Материал детали — не только внешний вид. Лёд скользит, резина тормозит, металл тяжёлый. Точную настройку даёт CustomPhysicalProperties: плотность, трение, упругость.

Движение без физики

ServerScriptService/MovingPlatform.lua
  1. local TweenService = game:GetService("TweenService")
  2.  
  3. local platform = workspace:WaitForChild("MovingPlatform")
  4. local info = TweenInfo.new(3, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true)
  5.  
  6. local goal = { CFrame = platform.CFrame * CFrame.new(0, 12, 0) }
  7.  
  8. TweenService:Create(platform, info, goal):Play()

Платформа закреплена и движется твином: физике её двигать не надо.