Quique e atrito
Parte da seção Física e jogabilidade do Journey de Unity da Coddy. Lição 12 de 63.
O modo como um colisor quica e desliza depende do seu PhysicsMaterial (nome usado no Unity 6; nas versões anteriores, era chamado de PhysicMaterial). bounciness vai de 0 (sem quique) a 1 (mantém toda a velocidade). dynamicFriction desacelera um corpo que está deslizando, e staticFriction determina quanta força é necessária para empurrar um corpo em repouso antes que ele comece a deslizar. Um colisor sem material age como se tivesse atrito 0.6 e bounciness 0. Esta superbola dá ao próprio colisor um material elástico:
void Start()
{
PhysicsMaterial mat = GetComponent<Collider>().material; // a cópia própria deste collider
mat.bounciness = 0.9f;
mat.bounceCombine = PhysicsMaterialCombine.Maximum;
}Um contato envolve dois colisores, então o Unity combina os valores de ambos. Cada material escolhe como fazer isso, com bounceCombine para a elasticidade e frictionCombine para o atrito, e cada um aceita um de quatro modos: Average (o padrão), Minimum, Multiply ou Maximum. Quando os dois colisores pedem modos diferentes, vence o que aparece mais tarde nessa lista. Em um piso sem material, Average daria à bola (0.9 + 0) / 2 = 0.45. Com Maximum, ela mantém 0.9 da velocidade a cada quique, o que corresponde a 0.9 x 0.9 = 81% da altura, já que a altura varia com o quadrado da velocidade.
.material dá a este colisor sua própria cópia do material, então as alterações afetam somente ele. .sharedMaterial é o próprio recurso de material, compartilhado por todos os colisores que o utilizam, e é null em um colisor ao qual nunca foi atribuído um material.
Desafio
FácilDê superfícies ao playground. O script Surface está no Trampoline azul (bounce 0.8, friction 0.6) e na faixa de gelo (Ice) (bounce 0, friction 0.1). A bola e a caixa não têm materiais próprios.
- Em
Start(), defina o material próprio deste collider comobounceefriction(tanto dinâmico quanto estático). - O que quer que caia sobre uma superfície deve quicar com o
bouncetotal da superfície, e o que quer que deslize sobre ela deve ter ofrictionpróprio da superfície, sem misturá-lo com o valor 0.6 dos objetos sem material.
Pressione Play para ver a bola quicar e, em seguida, Check: a caixa também desliza pelo gelo.
Experimente você mesmo
using UnityEngine;
public class Surface : MonoBehaviour
{
public float bounce = 0f;
public float friction = 0.6f;
void Start()
{
// Dê a este collider seu próprio material com bounce e friction
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Física e jogabilidade
1Rigidbody
Gravidade e MassaEmpurrar com AddForcePular com um ImpulsoFixedUpdate para FísicaVelocidadeCorpos CinemáticosRevisão: Plataforma de Lançamento2Colisões
OnCollisionEnterO que eu acertei?Quebre no impactoNo chãoQuique e atritoFormas dos collidersRevisão: Parede destrutível5Projeto: Corrida das Moedas
A Bola RolanteMoedas para Coletar