Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

Dê 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 como bounce e friction (tanto dinâmico quanto estático).
  • O que quer que caia sobre uma superfície deve quicar com o bounce total da superfície, e o que quer que deslize sobre ela deve ter o friction pró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
    }
}
quiz iconTeste seus conhecimentos

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