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.
Você pode modificar as configurações globais de física aqui:
- A direção e a magnitude da gravidade.
- Material físico padrão. Consulte a seção Colisão - Material Físico abaixo.
- Limiar de energia global. Calcule a energia cinética de um objeto usando a fórmula:
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.
- 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 é:
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:
-
Quanto maior a massa do jogador ou personagem, maior a probabilidade de ocorrer uma colisão violenta.
-
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.
-
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.
- 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:
Desabilite a colisão de níveis Personalizados e Padrão na Configuração de Física:
Você descobrirá que o jogador pode passar por qualquer objeto do nível de física padrão sem sentir:
Objetos que dependem de disparo de colisão também não serão disparados:
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.
Para a maioria dos objetos, você encontrará apenas um componente de colisão neles.
Porque geralmente não são objetos personalizados:
Para formas de colisão personalizadas e materiais físicos, recomendamos que você crie um novo nó vazio e opere nele:
Forma de colisão
O componente de forma de colisão determina os limites dentro dos quais os objetos colidem.
Tipo de colisão:
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.
Para formas básicas de colisão, você pode modificar sua posição, tamanho ou ajustar sua forma manualmente:
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
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.
Arquivos de materiais físicos podem ser criados.
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.
É 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:
Mas um evento de colisão pode ser desencadeado:
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.
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.
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.
<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.
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.
Criando um personagem do jogador
Aqui criamos apenas um personagem de jogador simples.
Crie um objeto vazio:
Adicione um componente Controlador de Personagem a este objeto.
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.
Atualmente o personagem não tem aparência, então adicione um nó filho vazio a este nó vazio para exibir a aparência.
Adicione um componente de renderização personalizado para nós filhos vazios.
Selecione Malha como Cilindro.
Neste momento, selecione o nó pai e observe nosso personagem no editor de cena.
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.
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.
Inicialização
Crie um script global para bloquear o jogador padrão, crie um novo jogador e defina o método de movimento.
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.
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.
3. Armazenamento de dados do jogador
Crie uma variável global para armazenar o controlador de personagem personalizado de cada jogador.
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.
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.
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:
- Salte
O salto é obtido aplicando força ao controlador de personagem personalizado.
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.
- Móvel
Nós controlamos o movimento alterando o estado, manipulando o estado do jogador pressionando e soltando o botão separadamente.
Adicione retornos de chamada nos botões para chamar esses métodos respectivamente.
- Salte
- Móvel
depurar
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.
Escrevendo o script
Adicione scripts para entidades de interface do usuário.
Mova a lente, tomando como exemplo o movimento para cima:
Parâmetros da lente de impressão:
Adicionar retorno de chamada
Adicione retornos de chamada para cada botão:
Tomemos como exemplo a ascensão:
Parâmetros da lente de impressão:
Dessa forma, você pode ajustar a câmera para obter o efeito desejado ao depurar o jogo: