Kızaklı araç fiziği


13

Çekiş gücünü azaltabilecek bir araç için araç fiziği nasıl oluşturabilirim? Sürücünün düz bir ayağı varmış gibi görünmesini istiyorum, bu yüzden gaza bastığınızda, araba (arka) tekerlekleri çekişten çekiyorlar ve kontrol etmeyi biraz zorlaştırıyorlar. Ben de çörek yapmak ve köşelerde "sürüklenme" istiyorum.

Ayrıca ne kadar "patinaj" meydana geldiğini de bilmeliyim, bu yüzden orantılı miktarda duman ve lastik izi ekleyebilirim.

2d, yukarıdan aşağıya tarzı bir araba oyunu varsayın.

Teşekkürler

Yanıtlar:


10

Bu çok basitleştirilmiş bir versiyonudur, ancak çoğu arcade tipi oyun için iyi olur. Aşağıdaki özelliklere ihtiyacınız vardır:

positionX, positionY - where the car is
velocityX, velocityY - speed on each axis
drag - how fast the car slows down
angle - the rotation of the car, in radians
angularVelocity - speed the car is spinning, in radians
angularDrag - how fast the car stops spinning
power - how fast car can accelerate
turnSpeed - how fast to turn

her çerçeve:

positionX += velocityX
positionY += velocityY
velocityX *= drag
velocityY *= drag
angle += angularVelocity
angularVelocity *= angularDrag

hızlandırmak

velocityX += sin(angle) * power;
velocityY += cos(angle) * power;

sola yönelmek

angularVelocity -= turnSpeed;

doğru yönlendirmek

angularVelocity += turnSpeed;

İyi sapma elde etmek için sürükleme ve açısal olarak ayarlayın 1'e çok yakın, örneğin 0,9'a sürükleyin


Yani kontroller güç (gaz kelebeği) ve açısal hız (direksiyon) olurdu? Yoksa bazı dönüşümleri kaçırıyor muyum?
drxzcl

hayır bu - nasıl yönlendirileceğini açıklamayı unuttum. Yeni turnSpeed ​​değişkeni ile güncellendi.
Iain

2

Bugün bir çarpışma ve dönüş sırasında bazı araç dinamiklerini simüle eden bir makale okuyordum:

Jing Zhou; Jianbo Lu; Huei Peng, "Hassas Hareketsizleştirme Tekniği Manevrasına Yanıt Olarak Araç Dinamikleri", 2008 ASME Dinamik Sistemler ve Kontrol Konferansı Bildirileri

Bu, kasıtlı bir çarpışma kuvvetinin neden olduğu yalpalama sırasında arka lastik çekiş kaybını ve arka lastik çekiş kaybını temsil eden bir fizik modelini içerir. Çarpışmalar sırasında araç dinamikleriyle ilgilenen oyun programcıları için ilginç görünüyor.


Oldukça bir çalışma, ama ne yazık ki eldeki sorun için uygun değil. Kağıt, araç rulosu ve hepsi ile 3D analizidir. Soru 2D üstten görünüm oyunuyla ilgilidir. Böylece 2B fizik, 3B değil.
Bram

1

Genel olarak Bourg'un Oyun Programcıları için Fizik önermiyorum , ancak bu konuda Bölüm 10'da (yaklaşık sayfa 171) biraz bahsediyor ve size bir başlangıç ​​noktası verebilir.

Ne yazık ki, PhysX'teki araç kodu hala 'örnek' ve iyi belgelenmemiş, bu yüzden bunun nasıl çalıştığını kolayca anlayamazsınız. Örneklerinden türetilen kodun 3D'de aradığınız davranış türünü gösterdiğini düşünüyorum, ancak istediğinizden daha düşük seviyeli bir simülasyon.


1

Anlamanız gereken ilk şey "kayma oranı" ve "çekiş çemberi" dir. Kayma oranı, açı farkı ile yanal lastik kuvveti arasında doğrusal olmayan bir ilişki ile lastik davranışı için iyi bir yaklaşımdır. Ayrıca sürücü torku geri bildirim bilgilerini de sağlar (kuvvet geribildirimi direksiyon simidi için).

Her iki kavramın süper basit versiyonu aşağıdaki gibidir: yuvarlanma yönü ve hareket yönü arasındaki açı farkı ne kadar fazla olursa, yuvarlanma yönüne dikey olarak o kadar fazla kuvvet olur (yanal kuvvet). (Tipik olarak) belki 5 ° ila 8 ° arasında zirveye ulaşır ve lastik açısı arttırılırsa oradan düşer.

Çekiş dairesi temel olarak, onun dışına çıkan herhangi bir kuvvet vektörünü klipsleyen bir sınırlayıcıdır. Ağır hızlanma / frenlemenin direksiyon kabiliyetini azaltma şeklini ve tam tersini modeller. Çekiş çemberinin boyutu (maksimum çekiş kuvveti vektörü) lastiği zemine bastıran kuvvetle ölçeklenir.

Yanal (direksiyon) kuvvetini sürüş / frenleme (dönme) torkundan ve zıt karşı çekme kuvvetinden ayrı olarak modellemeniz gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.