This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
O Defold inclui uma versão modificada da engine de física Box2D (versão 2.2.1) para simulações de física 2D e a engine de física Bullet (versão 2.77) para física 3D. Isso permite simular interações de física newtoniana entre diferentes tipos de objetos de colisão. Este manual explica como isso funciona.
Os principais conceitos das engines de física usadas no Defold são:
Além dos próprios objetos de colisão, você também pode definir restrições de objetos de colisão, mais comumente conhecidas como joints, para conectar dois objetos de colisão e limitar, ou de outras formas aplicar força e influenciar como eles se comportam na simulação de física. Saiba mais sobre joints.
Você também pode sondar e ler o mundo de física ao longo de um raio linear conhecido como ray cast. Saiba mais sobre ray casts.
A engine de física simula física newtoniana e foi projetada para funcionar bem com unidades de metros, quilogramas e segundos (MKS). Além disso, a engine de física é ajustada para funcionar bem com objetos móveis de tamanho na faixa de 0,1 a 10 metros (objetos estáticos podem ser maiores) e, por padrão, a engine trata 1 unidade (pixel) como 1 metro. Essa conversão entre pixels e metros é conveniente em nível de simulação, mas do ponto de vista de criação de jogos não é muito útil. Com as configurações padrão, uma forma de colisão com tamanho de 200 pixels seria tratada como tendo 200 metros, o que está muito fora da faixa recomendada, pelo menos para um objeto móvel.
Em geral, é necessário escalar a simulação de física para que ela funcione bem com o tamanho típico dos objetos em um jogo. A escala da simulação de física pode ser alterada em game.project pela configuração physics scale. Definir esse valor como, por exemplo, 0.02 significaria que 200 pixels seriam tratados como 4 metros. Observe que a gravidade (também alterada em game.project) precisa ser aumentada para acomodar a mudança de escala.
É recomendado atualizar a engine de física em intervalos regulares para garantir uma simulação estável (em vez de atualizar em intervalos possivelmente irregulares dependentes da taxa de quadros). Você pode usar uma atualização fixa para física marcando a configuração Use Fixed Timestep da seção Physics no arquivo game.project. A frequência de atualização é controlada pela configuração Fixed Update Frequency da seção Engine no arquivo game.project. Ao usar um timestep fixo para física, também é recomendado usar a função de ciclo de vida fixed_update(self, dt) para interagir com os objetos de colisão do seu jogo, por exemplo ao aplicar forças a eles.