Roblox'ta akıcı ve gerçekçi bir sürüş deneyimi oluşturmak, çarpışma hatalarına neden olan varsayılan fizik kısıtlamalarını bırakmayı gerektirir.
Hooke Kanununa dayalı raycast süspansiyonu, Pacejka lastik sürtünme modeli, anti-roll denge çubukları ve ağ sahipliği yetkilendirmesiyle hatasız yarış mekanikleri kurulabilir.
1. Raycast Süspansiyon Neden Fiziksel Tekerleklerden Üstündür?
Roblox çarpışma motorunun kısıtlamalarını aşma yöntemleri:
- Zemine Batma Riski Yok: Işınlar hızdan bağımsız olarak zemin mesafesini her fizik karesinde anında saptar.
- Tam Matematiksel Hakimiyet: Yay sertliği, sönümleme ve süspansiyon yüksekliği Luau koduyla milimetrik ayarlanır.
- Ağ Verisi Tasarrufu: Dört ayrı tekerlek yerine yalnızca gövdenin ana CFrame konumu oyuncular arasında senkronize edilir.
2. 4 Tekerlekli Raycast Süspansiyon Formülü (Hooke Kanunu + Sönümleme)
Her tekerleğe uygulanan yukarı yönlü itme kuvveti:
- Işın Yönü ve Mesafe: Tekerlek noktasından aşağıya ışın gönderilir:
Mesafe = NormalBoy + TekerlekYaricapi. - Yay Kuvveti:
Sikisma = NormalBoy - Mesafe; YayKuvveti =Sertlik * Sikisma. - Sönümleme (Amortisör): Arabanın yaylanmasını durdurmak için dikey hareket hızına ters direnç uygulanır.
- Toplam Kuvvet Vektörü: Zemin yüzeyine dik VectorForce ile araç havada dengede tutulur.
3. Lastik Sürtünme Modelleri: Çekiş & Drift (Pacejka Eğrisi)
Gerçekçi viraj tutuşu ve kontrollü drift hissi:
- Yanal Kayma Açısı (Slip Angle): Tekerleğin baktığı yön ile aracın gittiği yön arasındaki fark açısı.
- Pacejka Formülü: Yol tutuşu 6-10 derece kaymada zirve yapar; bu aşıldığında araba kontrolden çıkmak yerine tatlı bir drifte girer.
- İleri Çekiş Kontrolü: Gaza basıldığında tekerlek patinajını zemin dikey yükü sınırında tutarak hızlanmayı optimize etme.
-- Raycast Süspansiyon Kuvveti Hesaplama
local function CalculateWheelForce(wheelAttachment, restLength, stiffness, damping, wheelRadius)
local origin = wheelAttachment.WorldPosition
local direction = -wheelAttachment.WorldCFrame.UpVector * (restLength + wheelRadius)
local raycastParams = RaycastParams.new()
raycastParams.FilterType = RaycastFilterType.Exclude
raycastParams.FilterDescendantsInstances = {wheelAttachment.Parent}
local result = workspace:Raycast(origin, direction, raycastParams)
if not result then return Vector3.zero end
local hitDistance = result.Distance - wheelRadius
local compression = restLength - hitDistance
if compression <= 0 then return Vector3.zero end
local pointVelocity = wheelAttachment.Parent.AssemblyLinearVelocity
local suspensionVelocity = wheelAttachment.WorldCFrame.UpVector:Dot(pointVelocity)
local springForce = stiffness * compression
local dampingForce = damping * suspensionVelocity
local totalForceMagnitude = math.max(0, springForce - dampingForce)
return result.Normal * totalForceMagnitude
end
4. Ağırlık Transferi & Viraj Denge Çubukları (Anti-Roll Bar)
Ani frenlerde ve sert virajlarda gövde dengesini sağlama:
- Yunuslama (Pitch): Sert fren yapıldığında ağırlık ön tekerleklere binerek ön yol tutuşunu artırır.
- Denge Çubukları: Sağ ve sol süspansiyon arasındaki sıkışma farkını dengeleyerek aracın takla atmasını engeller.
- Aerodinamik Bastırma (Downforce): Hızın karesiyle artan dikey baskı uygulayarak yüksek süratlerde yol tutuşunu maksimize etme.
5. Ağ Sahipliği (Network Ownership) ve Gecikmesiz Direksiyon
Sürücü için sıfır gecikme, izleyiciler için akıcı görüntü:
- Sürücüye Yetki Verme: Sürücü koltuğuna oturulduğunda
SetNetworkOwnerçağrılarak fizik hesaplamaları sürücünün cihazında 120 FPS çalıştırılır. - Unreliable Remote İletişimi: Tekerleklerin dönüş açıları hafif paketlerle gönderilerek ağ trafiği rahatlatılır.
- Sunucu Hız Denetimi: Sunucu araç hız vektörlerini izleyerek olağandışı hız hilelerini otomatik engeller.
Frequently Asked Questions
Roblox tekerlekleri yüksek hızda neden havaya fırlar?
Fizik kareleri arasında tekerlek zemini delip geçer ve fizik motoru bunu düzeltmek için aracı aniden havaya fırlatır.
Raycast süspansiyon bunu nasıl engeller?
Tekerleklerin fiziksel çarpışması kapatılır; görünmez ışınlar zemini tarayarak aracı kuvvet vektörleriyle havada tutar.
Pacejka formülü yarış oyunlarında ne sağlar?
Aracın kontrolden çıkıp dönmesini önler ve virajlarda kontrollü drift yapılmasını mümkün kılar.
Diğer oyuncuların arabayı takılmadan görmesi nasıl sağlanır?
Ağ sahipliği sürücüye verilir ve izleyicilerin ekranında şasi konumu yumuşakça enterpole edilir.