FPS Çarpışma tespiti ve hareketi


11

Çarpışma algılama ve hareket tipik olarak bir FPS'de nasıl ele alınır, özellikle merdiven gibi zemin yüksekliğinde (hem eğimde hem de düşüşte) küçük değişiklikler yapar?

Yanıtlar:


12

Varlıklar genellikle dünya çapındaki çarpışma için dünya geometrisine (veya basitleştirilmiş bir çarpışma ağına) karşı bir kapsül (uçlarında küreler olan silindir) ile temsil edilir.

Merdivenler genellikle görünmez bir rampa ile çarpışmasızdır veya belirli bir yüksekliğin altında genellikle çarpışma çözünürlüğünün bir yan etkisi olarak yükselirsiniz. (adım boyutunun bir parçası olarak hareketle iç içe geçeceksiniz ve çözünürlük en yakın düzlem olarak yukarı doğru çıkacaktır)

Bence Unreal 3 böyle çalışıyor, ama yanılmış olabilirim. Kaynakta sınırlayıcı bir kutu hiyerarşisi gördüğümü hatırlıyorum, ancak bunun sadece savaş için olup olmadığını hatırlayamıyorum. ne olursa olsun, kapsüller basit ve hızlıdır


1

Unity 3D'de, en kolay yol birinci kişi denetleyicisine sahip olmaktır. Eğer basamak yüksekliği basamak ofsetinden daha yüksekse, genellikle karakter yukarı atlamak zorundadır. Ama bunu yapmanın başka bir yolu, bir kutu çarpıştırıcısı eklemek ve döndürmek, böylece karakterin bir rampa gibi kolayca merdivenlerden geçebilmesi.


0

Brady'nin cevabı iyidir, ancak bunu yapmak için hacky bir yol istiyorsanız, sadece bir ışını toprak çarpışma geometrisine indirebilir, hangi üçgene çarptığını anlayabilir ve daha sonra üçgen vertlerinin yüksekliğinin ağırlıklı bir ortalamasını kullanabilirsiniz. zemin yüksekliğini bulmak için.


Ya büyük, eğimli bir üçgense? Bir şekilde ışının kesişim noktasını bulamıyor musunuz?
Gustavo6046

Düzlemdeki konumu zaten biliyorsunuz, sadece yüksekliğe ihtiyacınız var, bu yüzden ağırlıklı ortalama belirledim. Gerçekten daha ileri gitmek istiyorsanız, çarpışma tespiti hakkında bir kitap almanızı tavsiye ederim. Bu matematik öğrenmek için en iyi biçim değildir.
BigSandwich

Ah evet. Ağırlıklı ortalama. Sanırım bunu yanlış okudum. Benim hatam.
Gustavo6046
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.