Guia do Programador de Física de Malha
Dicas gerais
Você pode começar verificando os documentos de física do Unity. Há muitos recursos disponíveis sobre como otimizar a física no Unity.
A física da malha vem com alguns desafios extras. Aqui estão algumas dicas para ajudar a superá-los.
Faça paredes grossas: a sincronização de rede pode mover ligeiramente os corpos rígidos. Como resultado, você verá alguma penetração extra entre os objetos. Pequenos corpos dinâmicos podem ser empurrados através de paredes finas. Para objetos e paredes mais grossos, esses efeitos de tunelamento são menos prováveis. Se possível, use um envoltório convexo ou um pequeno conjunto de envoltórios convexos para corpos dinâmicos.
Sempre que possível, use peças convexas grossas para geometria estática. Tente evitar malhas, especialmente malhas altamente densas.
Massas realistas em kg: Conteúdo de várias fontes pode interagir na mesma cena. Isso funciona bem se as proporções de massa entre os objetos forem razoáveis. Um bom ponto de partida é atribuir massas realistas a corpos usando kg.
Desenvolvendo conteúdo aprimorado de Física de Malha
Animações de reprodução automática
Você pode adicionar animações de reprodução automática à cena que interagem com corpos físicos. Essas animações são sincronizadas automaticamente entre os clientes, ajustando temporariamente sua velocidade de reprodução (desacelerando-as ou acelerando-as) em cada cliente até que todos os clientes estejam no mesmo estado de animação ao mesmo tempo.
Configurações
- Jogar Ativado automaticamente .
- Animate Physics recomendado (mas não obrigatório) se a animação afetar colisores que interagem com corpos físicos.
- Tipo de seleção definido como "Sempre animar" (imposto automaticamente pela física da malha) porque a animação pode afetar os corpos físicos mesmo quando eles estão fora da tela.
O clipe de animação usado pela animação de reprodução automática pode usar qualquer modo de quebra. Escolhas úteis são "Loop" e "Ping Pong".
Componentes
Adicionar um dos seguintes MonoBehaviour
componentes a um objeto adicionará o comportamento específico a esse objeto.
Corpo pegajoso
Faz com que os corpos grudem em outros corpos. Pode ser usado para lançar dardos em outros corpos ou para fixar uma imagem na parede. Isso é implementado criando uma restrição fixa entre os dois órgãos envolvidos. Observação: essa operação é executada em todos os clientes e, portanto, é implementada como uma mensagem de rede especial.
Configurações
- Vara: Define se o corpo se manterá em corpos dinâmicos e/ou estáticos.
- Quando: Às vezes você quer colar um corpo rápido quando ele apenas toca outro corpo, e às vezes você quer colar um corpo quando ele é mantido contra outro corpo por um determinado tempo, como esperar que a cola endureça quando você cola um botão na parede.
- Controle de colisão Para desativar colisões específicas entre um corpo e outro. Normalmente você pode/deve usar camadas de colisão. No entanto, como há apenas 32 camadas de colisão codificadas no Microsoft Mesh, isso pode não ser uma opção. Aqui você pode desativar corpos específicos.
- Corpos afetados para colisão Filtro de corpo aplicado para controle de colisão.
Campo de Contenção
Garante que os corpos rígidos permaneçam dentro dos limites de um ou vários colisores de gatilho.
Para que esse componente funcione, ele precisa ser conectado a um ou vários colisores de gatilho. (Esses colisores de gatilho também podem ser aninhados na hierarquia de transformação abaixo do GameObject
que tem esse componente anexado.)
Os corpos rígidos afetados por este componente já devem estar dentro dos limites de seus colisores de gatilho (o "volume de gatilho") quando a cena começa. O centro de massa de cada um desses corpos rígidos será então restrito a permanecer dentro dos limites do volume do gatilho - não será possível puxar ou mover os centros de massa desses corpos rígidos para qualquer lugar externo.
Configurações:
O desvio máximo da contenção permite que o centro de massa de um corpo rígido afetado saia ligeiramente dos volumes de gatilho antes de se encaixar novamente. Esta é uma compensação de otimização de desempenho: se o desvio máximo permitido for grande, o corpo poderá deixar visivelmente o volume do gatilho e voltar, mas o código pode evitar ter que verificar e verificar a posição do corpo com muita frequência quando ele está descansando ou se movendo lentamente dentro do volume do gatilho.
Corpos afetados define condições de filtragem opcionais para os corpos afetados por este componente. (Por padrão, todos os corpos são afetados.)
Campo vetorial de velocidade
Permite acelerar/desacelerar um corpo rígido até atingir uma velocidade alvo específica.
Este componente controla a magnitude e a direção da velocidade. Consulte Campo de magnitude de velocidade para controlar apenas a magnitude e Campo de direção de velocidade para controlar apenas a direção. Existem dois modos de operação:
- Se estiver ligado a um corpo rígido, este corpo rígido será controlado.
- Se conectado a um colisor de gatilho, todos os corpos rígidos que entrarem nesse volume de gatilho serão afetados.
Configurações:
- Tipo de velocidade define se estamos trabalhando em velocidade linear ou angular.
- Direção no espaço local define se a velocidade alvo é especificada no espaço local do objeto ao qual o componente está anexado.
- Velocidade alvo define o vetor de velocidade desejado em metros/segundo (ou radianos/segundo no caso de velocidade angular).
- A Aceleração máxima define a aceleração máxima aplicada para atingir a velocidade alvo.
- Tipo de aceleração define um tipo de aceleração para atingir uma velocidade alvo.
- Instantâneo atingirá a velocidade alvo imediatamente (o mesmo que Aceleração Constante com Aceleração Máxima = Infinito).
- A aceleração constante garantirá que o corpo atinja a velocidade desejada, não importa o que aconteça, dentro dos limites da configuração de aceleração máxima.
- A Abordagem Suave reduz a aceleração quanto mais perto você chega da velocidade alvo. Isso significa que, na prática, você nunca atingirá a velocidade alvo. Além disso, se houver alguma influência externa, como subir ou descer, essa influência extra não será completamente substituída, resultando em descidas mais rápidas do que subidas.
- Corpos afetados define condições de filtragem opcionais para os corpos afetados por este componente. (Por padrão, todos os corpos são afetados.)
Campo de gravidade em escala
Altera a forma como a gravidade afeta os corpos rígidos dentro dos limites de um ou vários colisores de gatilho.
Para que esse componente funcione, ele precisa ser conectado a um ou vários colisores de gatilho. (Esses colisores de gatilho também podem ser aninhados na hierarquia de transformação abaixo do GameObject que tem esse componente anexado.)
Quaisquer corpos rígidos que tocam ou se sobrepõem aos colisores de gatilho (o "volume do gatilho") se comportam de acordo com as configurações de gravidade deste componente, em vez da gravidade física global. Os corpos rígidos que têm a opção Usar gravidade desativada são ignorados.
Existe uma relação interessante entre a percepção do próprio tamanho do jogador no mundo e a gravidade:
- Se a gravidade é menor do que estamos acostumados (os objetos são mais lentos quando caem), o jogador se percebe maior – como um gigante.
- Se a gravidade é maior do que estamos acostumados (os objetos são mais rápidos quando caem), o jogador se percebe menor - como um rato.
Configurações:
- A predefinição de gravidade permite a seleção de várias predefinições interessantes e úteis para a propriedade Escala de gravidade : vários corpos celestes (Lua, Marte, Terra, Júpiter), sem gravidade (Espaço sideral) ou gravidade invertida (de cabeça para baixo). Você sempre pode substituir a Escala de Gravidade por qualquer valor que desejar.
- A Escala de gravidade define a gravidade local dentro do volume do acionador em relação à gravidade física padrão que afeta a cena. A escala de gravidade padrão de 1 não é afetada; valores maiores aumentam a gravidade; 0 remove a gravidade; valores negativos mudam a direção da gravidade.
- Corpos afetados define condições de filtragem opcionais para os corpos afetados por este componente. (Por padrão, todos os corpos são afetados.)
Campo de gravidade orbital
Simula a gravidade de um "planeta de brinquedo" em sua cena.
Para que esse componente funcione, ele precisa ser conectado a um ou vários colisores de gatilho. (Esses colisores de gatilho também podem ser aninhados na hierarquia de transformação abaixo do GameObject que tem esse componente anexado.)
Quaisquer corpos rígidos que toquem ou se sobreponham aos colisores de gatilho (o "volume do gatilho") são puxados para a posição do objeto que tem esse componente anexado.
Configurações:
A gravidade define a magnitude da gravidade. Esta é a aceleração do corpo em órbita (a "lua") em direção ao corpo central a uma distância de um metro. Como a velocidade orbital é sqrt (gravidade/raio), este valor descreve a velocidade² de uma lua em uma órbita estável em um raio de um metro.
Desativar gravidade global desativa a configuração de gravidade física global da cena para corpos afetados por este componente. Por padrão, a gravidade da cena global ainda afetará seu planeta e suas luas.
Corpos afetados define condições de filtragem opcionais para os corpos que podem se tornar luas neste campo de gravidade.
Force Moons On Circular Orbit é um truque que aplica algumas forças suaves para empurrar a lua para uma órbita circular. A motivação é que é difícil para um não especialista definir a gravidade e a velocidade inicial dos corpos de forma a atingir uma órbita circular. Além disso, se essa opção estiver habilitada, todas as luas colocadas dentro do campo de gravidade no Unity Editor começarão automaticamente a orbitar seu corpo central quando a cena for carregada.
A força da órbita forçada dimensiona a aceleração aplicada para forçar a lua a uma órbita circular.
Definir raio forçado onde colocado faz com que as luas colocadas dentro do campo gravitacional no Unity Editor adotem automaticamente sua distância inicial do corpo central como sua órbita preferida.
Definir raio forçado onde caiu faz com que as luas que são capturadas interativamente e movidas para o campo gravitacional adotem automaticamente a distância do corpo central em que foram lançadas como sua órbita preferida.
Raio de Força Padrão define o raio padrão para o truque acima que é usado, a menos que seja substituído por qualquer uma das outras opções.
Campo de flutuabilidade
Simula a flutuabilidade de corpos rígidos arbitrários na água: os corpos parecem flutuar no volume de disparo conectado.
Para que esse componente funcione, ele precisa ser conectado a um ou vários colisores de gatilho. (Esses colisores de gatilho também podem ser aninhados na hierarquia de transformação abaixo do GameObject que tem esse componente anexado.)
Quaisquer corpos rígidos que toquem ou se sobreponham aos colisores de gatilho (o "volume do gatilho") experimentam forças de empuxo (empuxo) para mantê-los flutuando.
Este componente usa a forma dos colisores do corpo rígido para calcular sua densidade (em outras palavras, volume dividido pela massa), flutuabilidade, arrasto e atrito.
Colisores de Flutuabilidade
Benefício: Desempenho. O custo de cálculo dos cálculos de flutuabilidade é dimensionado linearmente com o número de vértices do colisor. Os colisores físicos típicos para corpos, mesmo que já simplificados, são muitas vezes significativamente mais complexos (em termos de número de vértices) do que o necessário para que a flutuabilidade funcione bem o suficiente.
Como usar: Adicione um (ou vários) colisores adicionais (eles podem ser desativados) a um corpo. Marque os colisores como cascos de flutuabilidade explícitos, atribuindo um material de física chamado BuoyancyHull
(a ortografia exata importa!) a eles. Os detalhes de configuração deste material de física não importam - um material de física adequado é fornecido com o pacote de ferramentas Mesh. Se um corpo tiver colisores marcados assim, apenas esses colisores serão usados para cálculos de flutuabilidade; todos os outros colisores são ignorados.
Práticas recomendadas: colisores de casco de flutuabilidade explícitos para qualquer Rigidbody que possa ser lançado em um BuoyancyField. É melhor (e mais fácil) usar colisores Cube porque eles têm o menor número de vértices (oito por colisor). Combinar a forma visual exata do corpo flutuante geralmente não é necessário para um bom resultado; uma aproximação muito grosseira geralmente é suficiente.
Configurações:
- Densidade é a densidade do líquido simulado que "preenche" o volume do gatilho em quilogramas por metro cúbico. (O padrão representa a densidade aproximada da água à temperatura ambiente.)
- Tipo de superfície especifica como o componente coleta amostras da forma da superfície da água para calcular as forças de empuxo.
- Plano estático assume que a superfície da água é perfeitamente plana e nunca se move de sua posição inicial na cena. A posição e a orientação da superfície da água são determinadas apenas uma vez, quando a cena começa. Esta é a opção computacionalmente mais barata.
- O plano dinâmico pressupõe que a superfície da água é perfeitamente plana, mas permite que ela possa se mover (por exemplo, o nível da água pode subir ou afundar). A posição e a orientação da superfície da água são determinadas uma vez por quadro.
- O plano dinâmico por corpo é compatível com uma superfície de água que não é plana (por exemplo, pode ser ondulada). Para cada corpo rígido flutuando na superfície da água, uma aproximação planar local da superfície da água sob o corpo rígido é determinada uma vez por quadro, que é então usada para calcular as forças de empuxo para esse corpo rígido.
- Corpos afetados define condições de filtragem opcionais para os corpos que podem flutuar neste campo de flutuabilidade. (Por padrão, todos os corpos são qualificados.)
- O arrasto controla a resistência ao movimento à medida que o corpo rígido atinge a água (em outras palavras, o atrito ortogonal à superfície do corpo).
- O atrito da pele controla a resistência ao movimento à medida que o corpo rígido é movido através da água (em outras palavras, o atrito paralelo à superfície do corpo).
Importante: Para permitir que o componente acesse os triângulos de malha do colisor de um corpo rígido, a caixa de seleção "Leitura/Gravação habilitada" deve ser marcada nas configurações de importação da malha do colisor. Caso contrário, o corpo será ignorado pelo campo de flutuabilidade e cairá no campo sem ser afetado por ele.
Importante: Certifique-se de que seus corpos físicos tenham massas plausíveis para garantir que eles se comportem como esperado em um campo de flutuabilidade:
- Se a massa de um corpo rígido for implausivelmente alta em comparação com seu volume, ele afundará.
- Se a massa de um corpo rígido for implausivelmente baixa em comparação com seu volume (por exemplo, o padrão do
Rigidbody
Unity de uma unidade de massa), ele ficará apenas em cima do líquido simulado.
Por padrão, o campo de flutuabilidade faz uma amostra da superfície do volume do acionador para determinar a forma da superfície da água (sujeito à configuração de Tipo de superfície da água escolhida). As superfícies animadas na memória da CPU podem ser amostradas dessa forma, mas as superfícies animadas por um sombreador de vértice de GPU não são visíveis para o script em runtime. O BuoyancyField
componente fornece um delegado de retorno de chamada acessível por script chamado GetDistanceFromSurface
que permite que scripts externos forneçam informações sobre uma forma de superfície de água animada por GPU.
Consulte o BuoyancyFieldWaves
componente abaixo para saber como obter uma superfície de água ondulada com uma abordagem sem código.
Ondas de campo de flutuabilidade
Complemento ao componente que funciona com um sombreador BuoyancyFieldWaves_VertexPosition
de vértice específico (disponível como um grafo BuoyancyField
de subsombreador e um arquivo de inclusão HLSL). Isso cria o efeito visual de uma superfície de água ondulada junto com o comportamento correspondente de objetos flutuando na superfície da água.
Esse componente deve ser adicionado a um GameObject que já tenha um BuoyancyField
componente adicionado a ele.
A superfície da água a ser animada deve ser fornecida como uma malha plana e tesselada cujos limites tenham a forma desejada da superfície da água quando vista de cima para baixo. O material usado para a superfície da água deve usar um sombreador que incorpore o BuoyancyFieldWaves_VertexPosition
subsombreador para determinar as posições dos vértices da malha. Você pode usar o material de exemplo BasicWavyWaterSurface
incluído (e o grafo de sombreador com o mesmo nome) como ponto de partida para seus próprios desenvolvimentos de sombreador.
Configurações:
- O Agente de renderização de malha do Waves faz referência ao
MeshRenderer
componente que renderiza a malha da superfície da água.- Material mostra qual material é usado pelo renderizador. Isso se destina apenas a fins informativos.
- O sombreador mostra qual sombreador é usado pelo material. Isso se destina apenas a fins informativos.
- Nomes de Propriedade do Sombreador Waves define os nomes das propriedades de sombreador necessárias que devem ser expostas pelo sombreador. Essas propriedades são acessadas por esse componente em tempo de execução para garantir que o comportamento do campo de flutuabilidade permaneça em sincronia com os visuais da superfície da água em todos os clientes.
- Tempo Controlado por Script é o nome de uma propriedade de sombreador do tipo exposto
float
que será atualizada continuamente por esse componente a cada quadro com um tempo continuamente crescente (medido em segundos) que é sincronizado em todos os clientes. OBuoyancyFieldWaves_VertexPosition
subsombreador usa esse tempo compartilhado para criar um padrão de onda que permanece em sincronia em todos os clientes e em sincronia com o comportamento do campo de flutuabilidade. - Velocidade da onda é o nome de uma propriedade de sombreador do tipo exposto
float
que determina a velocidade base na qual as ondas se propagam horizontalmente. O valor da propriedade em si deve ser definido no material aplicado à malha da superfície da onda. Definir isso como zero faz com que a superfície da onda se torne estática e imóvel. - Comprimento de onda é o nome de uma propriedade de sombreador do tipo exposto
float
que determina a aspereza do padrão de onda. O valor da propriedade em si deve ser definido no material aplicado à malha da superfície da onda. Valores menores produzem ondulações curtas; valores maiores produzem ondas longas e arrebatadoras. - Altura da Onda é o nome de uma propriedade de sombreador do tipo exposto
float
que determina a altura base das ondas. O valor da propriedade em si deve ser definido no material aplicado à malha da superfície da onda. Definir isso como zero faz com que a superfície da onda fique completamente plana.
- Tempo Controlado por Script é o nome de uma propriedade de sombreador do tipo exposto
O gráfico de sombreador de amostra BasicWavyWaterSurface
incluído (usado pelo material com o mesmo nome) usa o subsombreador de vértice necessário BuoyancyFieldWaves_VertexPosition
para produzir a superfície 3D ondulada, mas inclui apenas uma implementação mínima de substituição para o sombreador de fragmento, o que faz com que ele renderize a superfície como uma malha sem sombreamento, de cor simples e semitransparente.
Você pode personalizar o caminho do fragmento de um sombreador usado com o BuoyancyFieldWaves
componente completamente ao seu gosto. No entanto, é essencial que o caminho do vértice do sombreador use o grafo BuoyancyFieldWaves_VertexPosition
de subsombreador e que ele exponha as quatro entradas para esse grafo de subsombreador como float
propriedades de sombreador do tipo de sombreador geral para que o componente possa acessá-las em runtime. Se o sombreador não incluir o grafo de subsombreador necessário ou se qualquer uma das propriedades de sombreador necessárias não for exposta, o inspetor do componente exibirá uma mensagem de erro em tempo de design e a flutuabilidade não funcionará em tempo de execução:
O grafo de sombreador de exemplo BasicWavyWaterSurface
pode servir como um substituto durante o desenvolvimento de conteúdo e como um ponto de partida para seus próprios desenvolvimentos de sombreador. Como alternativa, você pode pegar um sombreador de superfície de água existente, manter seu caminho de fragmento e substituir apenas seu caminho de vértice .
Velocidade angular máxima
Substitui a velocidade angular máxima padrão de um corpo físico.
O motor de física não permitirá que o corpo rígido exceda essa velocidade angular. Isso pode ser útil para limitar a velocidade de rolamento de um determinado corpo rígido ou para permitir que ele role mais rápido do que o padrão físico, que é de 50 radianos por segundo (aproximadamente 8 rotações por segundo).
A velocidade angular máxima deve ser inserida em radianos por segundo. O valor inserido também é exibido em graus por segundo (180 graus ≈ 3,14 radianos) e rotações por segundo (1 revolução = 360 graus ≈ 6,28 radianos).
Campo de magnitude de velocidade
Permite a aceleração/desaceleração de um corpo rígido até atingir uma velocidade dentro de uma faixa permitida.
Este componente controla a magnitude da velocidade e mantém a direção da corrente. Se o objeto estiver parado, ele escolhe uma direção aleatória para a duração de um quadro. Existem dois modos de operação:
- Se estiver ligado a um corpo rígido, este corpo rígido será controlado.
- Se conectado a um colisor de gatilho, todos os corpos rígidos que entrarem nesse volume de gatilho serão afetados.
Configurações:
- Tipo de velocidade define se estamos trabalhando em velocidade linear ou angular.
- Limites de velocidade define os limites desejados de velocidade mínima e máxima em metros/segundo (ou radianos/segundo no caso de velocidade angular). Se a velocidade atual estiver abaixo do mínimo, ele acelerará, se for maior que o máximo, o corpo desacelerará. Se a velocidade atual já estiver dentro dos limites, o script não terá efeito. Para definir uma velocidade alvo específica, defina mínimo e máximo com o mesmo valor.
- A Aceleração máxima define a aceleração máxima aplicada para atingir a velocidade alvo.
- Tipo de aceleração define um tipo de aceleração para atingir uma velocidade alvo.
- Instantâneo atingirá o limite de velocidade imediatamente (o mesmo que Aceleração constante com aceleração máxima = Infinito).
- A aceleração constante garantirá que o corpo atinja a velocidade desejada, não importa o que aconteça, dentro dos limites da configuração de aceleração máxima.
- A Abordagem Suave reduz a aceleração quanto mais perto você chega da velocidade alvo. Isso significa que, na prática, você nunca atingirá a velocidade alvo. Além disso, se houver alguma influência externa, como subir ou descer, essa influência extra não será completamente substituída, resultando em descidas mais rápidas do que subidas.
- Corpos afetados define condições de filtragem opcionais para os corpos afetados por este componente. (Por padrão, todos os corpos são afetados.)
Alinhar campo
Alinha o corpo ao eixo especificado.
Este componente adiciona torque ao corpo para alinhá-lo a uma direção específica. Observe que o torque é sempre aplicado na direção que gira o corpo em direção ao alvo. Existem dois modos de operação:
- Se anexado a um corpo rígido, este corpo rígido será alinhado.
- Se conectado a um colisor de gatilho, todos os corpos rígidos que entram nesse volume de gatilho serão alinhados.
Configurações:
- O eixo do corpo rígido define o eixo do corpo rígido afetado que deve ser alinhado ao alvo.
- O Modo de alinhamento fornece diferentes modos para especificar o alinhamento do alvo:
- No Espaço Global para especificar o alinhamento do alvo no Espaço global.
- No espaço local para especificar o alinhamento do alvo no espaço local (só faz sentido com o volume do gatilho).
- Direção da velocidade para alinhar o corpo à sua velocidade linear.
- Em direção ao objeto de jogo para alinhar o corpo em direção a um objeto de jogo de destino.
- Alinhamento de alvo define a direção de destino do alinhamento. (Somente quando O Modo de Alinhamento está definido como No Espaço Global ou No Espaço Local.)
- Objeto de jogo de destino define a direção de destino do alinhamento. (Somente quando O Modo de Alinhamento está definido como Em direção ao objeto do jogo.)
- O Multiplicador de Torque dimensiona o torque aplicado para atingir o alinhamento alvo; um multiplicador mais alto gira o corpo mais rápido (entre 1 e 1000).
- O coeficiente de amortecimento define o fator de amortecimento (entre 0 e 5). Quando definido abaixo de 1, o corpo pode oscilar em torno da orientação do alvo.
- Corpos afetados define condições de filtragem opcionais para os corpos afetados por este componente. (Por padrão, todos os corpos são afetados.)
Campo de direção de velocidade
Permite dirigir um corpo rígido até que a velocidade atinja uma direção alvo.
Este componente controla apenas a direção da velocidade e mantém a velocidade atual. Existem dois modos de operação:
- Se estiver ligado a um corpo rígido, este corpo rígido será controlado.
- Se conectado a um colisor de gatilho, todos os corpos rígidos que entrarem nesse volume de gatilho serão afetados.
Configurações:
- Tipo de velocidade define se estamos trabalhando em velocidade linear ou angular.
- Follow Game Object define se o destino é uma direção predefinida ou uma direção em direção a um GameObject específico. Funciona apenas para velocidade linear.
- Corpo de destino (se Seguir objeto de jogo estiver definido como verdadeiro): define a direção de acompanhamento desejada.
- Direção do alvo define a direção desejada. Esse valor é normalizado, portanto, a magnitude não tem efeito.
- Direção no espaço local define se a direção é especificada em uma transformação local da explosão.
- A Aceleração máxima define a aceleração máxima aplicada para atingir a velocidade alvo.
- Tipo de aceleração define um tipo de aceleração para atingir uma velocidade alvo.
- Instantâneo alcançará a direção alvo imediatamente (o mesmo que Aceleração Constante com Aceleração Máxima = Infinito).
- A aceleração constante garantirá que o corpo atinja a velocidade desejada, não importa o que aconteça, dentro dos limites da configuração de aceleração máxima.
- A Abordagem Suave reduz a aceleração quanto mais perto você chega da velocidade alvo. Isso significa que, na prática, você nunca atingirá a velocidade desejada. Além disso, se houver alguma influência externa, como subir ou descer, essa influência extra não será completamente substituída, resultando em descidas mais rápidas do que subidas.
- Corpos afetados define condições de filtragem opcionais para os corpos afetados por este componente. (Por padrão, todos os corpos são afetados.)
Corpo magnético
Dá ao corpo uma propriedade magnética que atrai ou repele outros corpos.
Para que esse componente funcione, ele precisa ser conectado a um ou vários colisores. (Esses colisores também podem ser aninhados na hierarquia de transformação abaixo do GameObject
que tem esse componente anexado.) Cada colisor exibe uma força em outros corpos rígidos que estão próximos o suficiente desse colisor.
Configurações:
- A força define a aceleração do ímã no ponto de contato (quando a distância entre os colisores é zero).
- A distância de influência controla a faixa da força magnética. A força magnética é aplicada apenas se a distância mais curta entre os colisores for menor.
- O tipo de campo define como a força magnética enfraquece com a distância.
- Constante assume que a força magnética é a mesma, independente da distância.
- Linear assume que a força magnética cai linearmente da Força para zero (na Distância de Influência).
- O inverso assume uma dependência inversamente proporcional à distância.
- Inverso ao quadrado assume uma dependência inversamente proporcional à distância ao quadrado (semelhante a um ímã real).
- O Pólo Magnético controla quais objetos são atraídos ou repelidos por esse objeto.
- O Pólo Norte atrai o Pólo Sul e repele o Pólo Norte.
- O Pólo Sul atrai o Pólo Norte e repele o Pólo Sul.
- Magnético atrai tanto o Pólo Sul quanto o Pólo Norte.
- Desativar gravidade no contato: Se isso estiver ativado e a força do ímã for duas vezes maior que a gravidade, a gravidade será desativada para corpos que estão em contato com este ímã. Um dos objetos deve ser estático para que isso tenha um efeito. Isso é frequentemente usado para evitar o deslizamento de corpos por uma parede.
Explosão esférica
Cria uma explosão que faz com que todos os corpos dentro de um raio específico se movam para fora.
A força de explosão depende da massa de um corpo rígido (e potencialmente da distância do centro da explosão).
Configurações:
- A força define o efeito da explosão nos corpos em metros/segundo. A mudança de velocidade real é menor dependendo do tipo de explosão e da massa crítica (veja abaixo).
- A distância de influência controla o alcance da força de explosão.
- Tipo de campo define como o efeito de explosão enfraquece com a distância.
- Constante assume que o efeito é independente da distância.
- Linear Drop assume que o efeito cai do máximo para zero (na distância de influência).
- A massa crítica define a massa do corpo não afetada pela explosão. Corpos mais pesados sentem menos efeito do que corpos mais leves. Por exemplo, um corpo rígido que pesa um terço da massa crítica sentirá dois terços da mudança de velocidade.
- A Escala de Impulso Angular define onde a força é aplicada. Se definido como 0, a força é aplicada no centro de massa, o que significa que não há rotação. Se definido como 1, a força é aplicada no ponto mais próximo da explosão.
- Oclusão Se ativado, os objetos escondidos atrás de outros objetos não sentirão a explosão. Apenas um único raio entre o centro da explosão e o centro de massa é verificado quanto à oclusão.
Explosão Direcional
Cria uma explosão que faz com que todos os corpos dentro de um gatilho se movam em uma direção específica.
A força de explosão depende da massa de um corpo rígido. Para que esse componente funcione, ele precisa ser conectado a um colisor de gatilho. Todos os corpos dentro do colisor de gatilho são afetados.
Configurações:
- A força define o efeito da explosão nos corpos em metros/segundo. A mudança de velocidade real é menor dependendo da Massa Crítica (veja abaixo).
- A direção define a direção da explosão. Esse valor é normalizado, portanto, a magnitude não tem efeito.
- Direção no espaço local define se a direção é especificada em uma transformação local da explosão.
- A massa crítica define a massa do corpo não afetada pela explosão. Corpos mais pesados sentem menos efeito do que corpos mais leves. Por exemplo, um corpo rígido que pesa um terço da massa crítica sentirá dois terços da mudança de velocidade.
- A Escala de Impulso Angular define onde a força é aplicada. Se definido como 0, a força é aplicada no centro de massa, o que significa que não há rotação. Se definido como 1, a força é aplicada no ponto mais próximo da explosão.
- Corpos afetados define condições de filtragem opcionais para os corpos afetados por este componente. (Por padrão, todos os corpos são afetados.)
Estabilização articular
Estabiliza o sistema de restrição ajustando o tensor de inércia do corpo rígido.
O script funciona em todas as crianças com o componente Rigidbody ou Joint anexado.
Configurações:
- O Fator de Estabilização define o quanto você sacrifica a correção física pela estabilidade. Por exemplo, 1 -> principalmente física correta, 4 -> compromisso, 10 -> estável com artefatos.
- A projeção conjunta permite a projeção de restrição em todos os filhos. Isso pode melhorar drasticamente a estabilidade, mas sacrifica a correção física. Funciona apenas em Articulações Configuráveis e de Caracteres.
- A Distância de projeção define a violação máxima permitida de restrições. Para evitar problemas físicos, tente definir esse valor o mais alto possível.
Superfície saltitante
Cria uma superfície saltitante que faz com que todos os objetos em colisão ricocheteiem com uma velocidade predefinida.
Configurações:
- A Magnitude da Velocidade de Ressalto define a magnitude da velocidade mínima e máxima do objeto após o ressalto. Consulte Efeito de salto para saber como a direção é determinada. Defina Mín e Máx como valor igual se quiser especificar uma única velocidade alvo.
- O efeito de salto define o comportamento pretendido de objetos saltitantes.
- Salto perfeito: o ângulo da velocidade de entrada para o plano de colisão normal é o mesmo que o ângulo da velocidade de saída.
- Definir magnitude da velocidade: o ângulo da velocidade de saída para o normal é afetado pelo atrito.
- Definir velocidade normal: semelhante a Definir magnitude da velocidade, mas a magnitude da velocidade de ressalto define a magnitude da velocidade perpendicular ao plano (velocidade normal).
- Saltar em direção ao corpo alvo: a direção da velocidade de saída é direcionada para um corpo alvo. Se essa opção for selecionada, a propriedade Corpo de destino será exibida e deverá ser definida.
- O atrito controla quanta velocidade tangencial é perdida após a colisão. Quando definido como 0, o objeto saltitante retém a velocidade tangencial. Quando definido como 1, o objeto salta na direção perpendicular à superfície (velocidade tangencial é 0). Para valores maiores que 1, o objeto salta para trás.
Deslocamento do centro de massa
Desloca o centro de massa de um corpo rígido.
Configurações:
- Deslocamento em coordenadas locais define o deslocamento em coordenadas locais.
Escopo da Física Local
Todos os rigidbodies na hierarquia neste componente não serão sincronizados entre os clientes. Esse script deve ser adicionado a corpos rígidos cujas posições ou rotações são definidas por meio de um script visual ou de uma animação.
Saiba mais sobre os nós de eventos de física do Script Visual de Malha.
Trajetória de arremesso
Calcula a posição futura do corpo rígido no espaço livre sob o efeito da gravidade.
Configurações:
- Modo de corpo rígido: Quando definido como true, a posição e a velocidade do corpo rígido são consideradas como condições iniciais. Permite o cálculo da posição futura em tempo real.
- Corpo rígido (aplica-se somente quando o Modo de corpo rígido está definido como true.): Define qual corpo rígido é usado.
- Velocidade inicial: (aplica-se apenas quando o modo Rigidbody está definido como false): define a velocidade inicial. A posição inicial é obtida da posição do GameObject ao qual esse componente está anexado.
- Número máximo de pontos: Define o número máximo de pontos calculados.
- Passo de tempo: Define a diferença de tempo entre as posições futuras.
- Gravidade: Esta é a aceleração gravitacional.
- Renderizador de linha: Especifica o renderizador de linha para o qual a posição dos pontos são copiados. Isso exibe a trajetória de arremesso.
Redefinir transformações de corpo
Quando acionado por um script visual, esse componente redefine a posição e a rotação de todos os corpos físicos na mesma transformação ou qualquer transformação secundária para seus valores iniciais.
Configurações:
- Salvamento automático inicial: Se selecionado, use as transformações na inicialização do ambiente à medida que a redefinição se transforma. Se não estiver marcada, você deverá usar um script visual para chamar a função Salvar Transformações de Corpo Agora para salvar transformações de redefinição antes de executar uma redefinição.
Funções disponíveis para scripts visuais
- Redefinir transformações de corpo agora: redefine a posição e a rotação de todos os corpos físicos no escopo deste componente Redefinir transformações de corpo para suas transformações de redefinição salvas mais recentemente. Invoque isso apenas em um cliente.
- Salvar transformações de corpo agora Salva a posição atual e a rotação de todos os corpos físicos no escopo deste componente Redefinir transformações de corpo à medida que suas transformações de redefinição. Invoque isso apenas em um cliente.