Sekme ve Sürtünme
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 12 / 71.
Bir çarpıştırıcının nasıl sektiği ve kaydığı, PhysicsMaterial değerine bağlıdır (Unity 6'daki adı; eski sürümlerde PhysicMaterial olarak adlandırılıyordu). bounciness 0 (sekme yok) ile 1 (hızının tamamını korur) arasında değişir. dynamicFriction kayan bir cismi yavaşlatır ve staticFriction, duran bir cismin kaymaya başlamadan önce ne kadar güçlü itilmesi gerektiğini belirler. Malzemesi olmayan bir çarpıştırıcının sürtünmesi 0.6, sekme katsayısı ise 0 olarak kabul edilir. Bu süper top, kendi çarpıştırıcısına zıplayan bir malzeme atar:
void Start()
{
PhysicsMaterial mat = GetComponent<Collider>().material; // bu collider'ın kendi kopyası
mat.bounciness = 0.9f;
mat.bounceCombine = PhysicsMaterialCombine.Maximum;
}Temas noktasında iki çarpıştırıcı bulunur, bu nedenle Unity bunların değerlerini birleştirir. Her malzeme bunun nasıl yapılacağını seçer: sekme katsayısı için bounceCombine, sürtünme için frictionCombine kullanılır ve her biri dört moddan birini alır: Average (varsayılan), Minimum, Multiply veya Maximum. İki çarpıştırıcı farklı modlar istediğinde, listede daha sonra gelen mod kazanır. Malzemesi olmayan bir zeminde Average, top için (0.9 + 0) / 2 = 0.45 sonucunu verir. Maximum ile top her sekişte hızının 0.9'unu korur; bu da yüksekliğinin 0.9 x 0.9 = %81'i demektir, çünkü yükseklik hızın karesiyle orantılıdır.
.material, bu çarpıştırıcıya malzemesinin kendi kopyasını verir; dolayısıyla değişiklikler yalnızca onu etkiler. .sharedMaterial ise malzeme varlığının kendisidir ve onu kullanan tüm çarpıştırıcılar tarafından paylaşılır; hiç malzeme atanmamış bir çarpıştırıcıda değeri null olur.
Görev
KolayTrambolin ve buz için ayrı zıplama ve sürtünme değerleri belirle.
Start()içindePhysicsMaterial mat = GetComponent<Collider>().material;satırını al vemat.bounciness = bounce;,mat.dynamicFrictionvemat.staticFrictiondeğerlerinifrictionolarak ayarla.mat.bounceCombine = PhysicsMaterialCombine.Maximum;vemat.frictionCombine = PhysicsMaterialCombine.Minimum;olarak ayarla; böylece yüzeyin kendi değerleri geçerli olur.
“Oyna” düğmesine bas: top trambolinden yükseğe seker. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
public class Surface : MonoBehaviour
{
public float bounce = 0f;
public float friction = 0.6f;
void Start()
{
// Bu collider'a bounce ve friction değerlerini içeren kendine ait bir materyal ata
}
}
Fizik ve Oynanış bölümündeki tüm dersler
1Rigidbody
Yerçekimi ve KütleAddForce ile İtmeDürtüyle ZıplamaFizik için FixedUpdateHızKinematik CisimlerTekrar: Fırlatma Rampası2Çarpışmalar
OnCollisionEnterNeye Çarptım?Çarpınca KırılYerde DurmakSekme ve SürtünmeCollider ŞekilleriTekrar: Kırılabilir DuvarKendi başına pratik yap: Unity playground