física

O sistema de física ajuda a simular comportamentos físicos do mundo real, como colisões e forças.

Módulo de Física

Physics é um mod que é carregado por padrão.

imagem-20240923155343336

Você pode modificar as configurações globais de física aqui:

  1. A direção e a magnitude da gravidade.
  2. Material físico padrão. Consulte a seção Colisão - Material Físico abaixo.
  3. Limiar de energia global. Calcule a energia cinética de um objeto usando a fórmula:
Ek=1/2<em>m</em>v2
m representa a massa de um objeto em kg.

v representa a velocidade física em m/s.

Quando a energia cinética de um objeto for menor que esse limite, ele parará de se mover. Por exemplo, se o limite for definido como 0,5, um objeto de 1 kg parará de se mover quando a velocidade for menor que 1 m/s.
  1. Limite de Colisão do Controle de Personagem. Aplicável somente a mods de jogador que tenham [Usar Controle de Jogador com Física] ativado ou controles de personagem totalmente personalizados.

A fórmula do momento é:

p=mv

m é massa, unidade é kg.

v é a velocidade em m/s.

Quando ocorre uma colisão, o momento do jogador e o corpo rígido atingido são subtraídos, e o módulo da diferença de momento na normal de colisão é calculado e comparado com o limite de colisão do controlador do personagem. Se for menor que esse limite, o corpo rígido será empurrado de forma constante, caso contrário, ocorrerá uma colisão violenta.

Em termos gerais, os parâmetros que afetam se uma colisão é violenta são:

  1. Quanto maior a massa do jogador ou personagem, maior a probabilidade de ocorrer uma colisão violenta.

  2. Quanto maior a velocidade relativa entre o jogador ou personagem e o corpo rígido atingido, maior a probabilidade de ocorrer uma colisão violenta.

  3. Quanto maior for o limite de colisão do controlador de personagem, menor será a probabilidade de ele colidir violentamente.

Por exemplo, quando o limite de colisão do controlador do personagem é definido como 50, um jogador de 50 kg viajando a 1 m/s pode colidir violentamente com qualquer corpo rígido estacionário de massa semelhante à do jogador ou personagem em uma colisão frontal.

  1. Nível físico. A ocorrência de colisões em níveis diferentes depende da configuração física.

Para configurar uma camada de física não padrão para um jogador:

imagem-20240717181446557

Desabilite a colisão de níveis Personalizados e Padrão na Configuração de Física:

imagem-20240717181534541

Você descobrirá que o jogador pode passar por qualquer objeto do nível de física padrão sem sentir:

imagem-20240923163608324

Objetos que dependem de disparo de colisão também não serão disparados:

image-20240923163636790

Formas de colisão e colisões

Há dois componentes básicos necessários para aplicar objetos personalizados ao sistema de física:

Componente de forma de colisão e Componente de colisão.

imagem-20240923150401236

Para a maioria dos objetos, você encontrará apenas um componente de colisão neles.

Porque geralmente não são objetos personalizados:

imagem-20240923150521786

Para formas de colisão personalizadas e materiais físicos, recomendamos que você crie um novo nó vazio e opere nele:

imagem-20240923150725335

imagem-20240923150807166

Forma de colisão

O componente de forma de colisão determina os limites dentro dos quais os objetos colidem.

Tipo de colisão:

imagem-20240923153336796

O tipo de colisão determina a forma básica da colisão. Fornecemos três formas básicas: cubo, esfera, cápsula e colisão de malha.

Os aceleradores de malha são formas de colisão simuladas com base nos limites de um modelo e que estão próximas da aparência visual do modelo.

Para o nó vazio criado, você precisa adicionar um componente de renderização personalizado para especificar o formato e o tamanho da grade.

image-20240923153752769

Para formas básicas de colisão, você pode modificar sua posição, tamanho ou ajustar sua forma manualmente:

imagem-20240923153907205

Arraste o ponto amarelo na caixa de colisão para ajustar o formato da colisão

A forma de colisão da malha tem a opção de ser convexa ou não

imagem-20240923154035083

Polígonos Convexos: Se deve colidir com outros Colisores de Malha. Colisores de Malha sem Polígonos Convexos habilitados são suportados apenas em GameObjects sem um componente Corpo Rígido. Para usar um Colisor de Malha com um componente Corpo Rígido, marque a opção Polígonos Convexos.

Colisão

Materiais Físicos

O material físico determina algumas propriedades físicas do corpo de colisão.

Para objetos personalizados, o material físico da colisão pode ser personalizado. No entanto, para a maioria dos objetos não personalizados fornecidos oficialmente, o material físico não permite modificações.

image-20240923154559903

Arquivos de materiais físicos podem ser criados.

imagem-20240923154405512

Você pode modificar as seguintes propriedades no painel do inspetor do arquivo de material físico para que todos os objetos montados com o material físico obtenham as propriedades físicas correspondentes.

image-20240923154620475

É um gatilho?

Quando a caixa de seleção É um gatilho está marcada, o colisor ignora colisões físicas, mas pode acionar eventos.

Isso significa que o objeto não participará da lógica de colisão física padrão:

imagem-20240923154941118

Mas um evento de colisão pode ser desencadeado:

imagem-20240923155036397

image-20240923155220723

Nível Físico

Determina o nível da física. A ocorrência de colisões em níveis diferentes depende da configuração do módulo de física.

Corpo rígido

O componente Rigidbody torna o objeto fisicamente controlado, permitindo que ele seja afetado por forças.

Para adicionar um componente Rigidbody, você deve primeiro ter um componente Collision.

Corpos rígidos são divididos em estáticos, dinâmicos e cinemáticos.

image-20240924112556743

Corpos rígidos estáticos são usados principalmente para objetos que não têm velocidade e não estão sujeitos a força, como o solo, paredes e outros objetos que não se movem. Modificar a posição e a escala desses objetos aumentará a sobrecarga de desempenho.

Corpo rígido dinâmico é usado principalmente para objetos com propriedades mecânicas, como massa e velocidade, que podem ser afetadas pela força.

imagem-20250630165950663

Você pode modificar os parâmetros relacionados à física, como centro de gravidade e massa, na opção Corpo Rígido Dinâmico. Você também pode optar por bloquear um eixo específico para que o corpo rígido não sofra um deslocamento ou rotação específicos.

Corpos rígidos cinemáticos podem ser controlados manualmente para se mover e girar, mas não são afetados por colisões ou forças de outros corpos rígidos. São frequentemente usados em animação e produção de efeitos especiais.

Controlador de Personagem

##Controlador de jogador FF

Por padrão, as ações do jogador no personagem do jogador são herdadas do controle do jogador do FreeFire.

Controlador de jogador com física

No módulo do jogador, após marcar [Se deve usar o controle do jogador com efeitos físicos], você pode modificar os parâmetros físicos de alguns controles do jogador. Nesse caso, o jogador começa a participar da simulação física do jogo até certo ponto, como a configuração [Limite de Colisão do Controle do Personagem] no módulo de física que entrará em vigor.

imagem-20240924115708102

<strong>Se deve usar o controle do jogador com efeitos físicos: </strong>Marque para usar um controle com efeitos físicos personalizados e expandir as configurações relacionadas.

<strong>Altura total, incluindo hemisférios superior e inferior:</strong> A altura do corpo de colisão da cápsula do personagem.

<strong>O raio dos hemisférios superior e inferior: </strong>O raio da cápsula não pode exceder 1/2 da altura.

<strong>Qualidade:</strong> Qualidade do jogador.

<strong>Ângulo máximo de subida:</strong> Declives que excedam esse ângulo não podem ser escalados e o jogador começará a deslizar para baixo.

<strong>Deslocamento vertical do passo:</strong> A distância que o jogador pode desviar da configuração sem sair do chão ou ficar bloqueado, comumente usada ao subir e descer escadas.

<strong>Distância mínima de movimento:</strong> Se a distância que o controlador do personagem precisa se mover for menor que esse valor, o jogador permanecerá imóvel.

Espessura da pele: a profundidade que outros objetos podem incorporar no colisor do personagem, usada para evitar trepidação ou travamento.

<strong>Aceleração gravitacional que você recebe:</strong> A aceleração gravitacional que você recebe em três dimensões. Para personagens jogadores, esta configuração substitui as configurações globais de física.

<strong>Habilitar empurrão personalizado:</strong> Quando habilitado, a força aplicada pelo personagem ao empurrar o corpo rígido pode ser personalizada. Expanda a configuração relevante após habilitá-lo.

<strong>Força de empurrão personalizada:</strong> A quantidade de força aplicada quando o personagem empurra o corpo rígido.

<strong>Altura do salto múltiplo:</strong>A altura do salto ao executar um salto múltiplo.

<strong>Número máximo de saltos múltiplos: </strong>O número máximo de saltos suportados por cada salto múltiplo.

<strong>Movimento Aéreo:</strong> quando ativado, os jogadores podem alterar sua velocidade e direção de movimento no ar.

Controlador de personagem totalmente personalizável

No controlador de personagem totalmente personalizado, você pode personalizar completamente o controlador de personagem sem nenhuma restrição, mas este controlador não tem nenhuma função padrão.

Para usar um controlador de personagem completamente personalizado, você precisa usar o componente do controlador de personagem, e o objeto usado como personagem controlado não pode ter colisão, forma de colisão, corpo rígido e outros componentes.

imagem-20240924120030311

Consulte o exemplo abaixo para uso específico.

Exemplo

Explicaremos como usar um controlador de personagem personalizado criando um controlador de personagem simples no modo horizontal.

Prepare a cena

Basta construir uma cena.

image-20240926150721110

Criando um personagem do jogador

Aqui criamos apenas um personagem de jogador simples.

Crie um objeto vazio:

image-20240926150911348

Adicione um componente Controlador de Personagem a este objeto.

image-20240926151012964

Adicione um atributo personalizado ao controlador de personagem: estado. Usaremos o estado para controlar os movimentos para a esquerda e para a direita do personagem do jogador posteriormente.

imagem-20240926151107697

Atualmente o personagem não tem aparência, então adicione um nó filho vazio a este nó vazio para exibir a aparência.

imagem-20240926151307907

Adicione um componente de renderização personalizado para nós filhos vazios.

imagem-20240926151344936

Selecione Malha como Cilindro.

imagem-20240926151443376

Neste momento, selecione o nó pai e observe nosso personagem no editor de cena.

imagem-20240926151546844

A malha da cápsula é o componente controlador de personagem do objeto pai, e o cilindro é o componente de renderização personalizado do objeto filho. Descobrimos que o controlador de personagem parece ser um pouco mais alto do que aparenta e tem um alcance menor que o do modelo.

Ajuste a altura relativa dos objetos filho e a aparência do controlador de personagem para que eles correspondam aproximadamente.

imagem-20240926151803081

imagem-20240926151903119

Preste atenção especial que, para o controlador de personagem, sua altura deve ser maior que o dobro do raio.

Defina o personagem criado como um prefab e renomeie-o para New_player (ou qualquer nome que desejar). Exclua o objeto vazio usado na cena.

imagem-20240926152126406

Inicialização

Crie um script global para bloquear o jogador padrão, crie um novo jogador e defina o método de movimento.

imagem-20240926153801533

1. Limpe a interface de usuário padrão

Para usar um controlador de personagem personalizado, você precisa primeiro resolver o problema do controlador de jogador integrado. O personagem do jogador não pode ser excluído do jogo, mas podemos usar alguns métodos para torná-lo incontrolável ou visível.

Ao fechar a interface de usuário padrão, podemos bloquear todas as interfaces de usuário que podem manipular diretamente o player padrão.

imagem-20240926152534232

2. Use uma câmera personalizada

A câmera padrão segue o personagem padrão do jogador, então precisamos usar uma nova câmera personalizada para observar apenas o novo personagem do jogador que criamos.

image-20240926152824590

3. Armazenamento de dados do jogador

Crie uma variável global para armazenar o controlador de personagem personalizado de cada jogador.

image-20240926153846600

imagem-20240926153853898

imagem-20240926153934182

4. Defina o método de movimento

Nós controlamos o movimento julgando o estado do controlador do personagem, definindo 0 para nenhum movimento, 1 para movimento para a esquerda e 2 para movimento para a direita.

Cada vez que uma atualização é feita, todos os controladores personalizados executam um método de movimento. O método de movimento verifica o estado do controlador do jogador. Se estiver no estado de movimento, ele se move um pequeno deslocamento na direção correspondente.

image-20240926154524350

Quando o quadro fixo é atualizado, o evento é disparado a uma frequência de 30 vezes por segundo, o que equivale ao controlador do personagem se movendo a uma velocidade de 30*0,1=3m/s.

Crie uma IU de ação personalizada

Crie uma interface de usuário para controlar o movimento do controlador de personagem personalizado.

imagem-20240926154930426

Os três botões são usados para mover o jogador para a esquerda, direita e pular.

Adicione scripts às entidades da interface do usuário e use a lógica de processamento de retorno de chamada:

  1. Salte

O salto é obtido aplicando força ao controlador de personagem personalizado.

imagem-20240926155224218

A interface de aplicação de força pode selecionar diretamente a velocidade da aplicação, evitando o cálculo de força e massa.

  1. Móvel

Nós controlamos o movimento alterando o estado, manipulando o estado do jogador pressionando e soltando o botão separadamente.

imagem-20240926155731649

imagem-20240926155753513

Adicione retornos de chamada nos botões para chamar esses métodos respectivamente.

  1. Salte

image-20240926155857104

  1. Móvel

imagem-20240926155911048

imagem-20240926155924485

depurar

imagem-20240926160400721

A lógica funciona normalmente.

Adicionado: Depuração de lente

Ao usar uma lente personalizada, às vezes é difícil determinar um parâmetro de lente apropriado.

Podemos ajustar a câmera durante a fase de desenvolvimento adicionando uma interface de usuário para controlá-la. Usar a mesma ideia pode ajudar você a otimizar continuamente o desempenho do seu controlador de personagem durante a fase de depuração.

Crie a IU

Usamos botões para controlar o movimento da lente para cima, para baixo, para a esquerda, para a direita, para a frente e para trás, e imprimimos o deslocamento atual da lente por meio de um botão.

image-20240926160759275

Escrevendo o script

Adicione scripts para entidades de interface do usuário.

Mova a lente, tomando como exemplo o movimento para cima:

imagem-20240926160942701

Parâmetros da lente de impressão:

imagem-20240926161034212

Adicionar retorno de chamada

Adicione retornos de chamada para cada botão:

Tomemos como exemplo a ascensão:

imagem-20240926161123354

Parâmetros da lente de impressão:

imagem-20240926161149538

Dessa forma, você pode ajustar a câmera para obter o efeito desejado ao depurar o jogo:

imagem-20240926161255378