Mélanie  Faria

Mélanie Faria

1659024000

Compreendendo O Raycasting 2D E 3D No Unity

O Raycasting é frequentemente o assunto de debates acalorados em tutoriais, fóruns e blogs. Não só de entusiastas, mas também de desenvolvedores avançados que tendem a ter dificuldades em entender as nuances da aula de Física.

Tudo bem se você não estiver completamente familiarizado com a documentação oficial do Unity. À custa de explicações exaustivas e detalhadas, eles adotam uma abordagem geral e simplista para cobrir mais terrenos.

É por isso que estou tão feliz que você encontrou este artigo enquanto exploramos o Raycasting em detalhes!

Queríamos nos aprofundar nisso, e é por isso que este artigo tem uma abordagem muito teórica. A ideia principal é ajudar todos a realmente entender o que está acontecendo sob o capô do Raycasting no Unity.

Também esperamos que você se divirta e considere este artigo um recurso completo para Raycasting no Unity.

Entendendo a Física na Unidade

Você já se sentiu inseguro sobre qual método escolher? Ou hesitante sobre o que torna cada método diferente?

Isso é normal. Considere que o Unity oferece 22 métodos prontos para uso e, se você levar em conta as sobrecargas, obtém mais de 100 métodos diferentes para usar em sua cena - isso é muito!

Ah, e isso é apenas para 3D. Não é à toa que as pessoas entram em pânico!

Vamos dar uma olhada no Unity:

Captura de tela de exemplo do Unity

Assustador, hein?

Não se preocupe. Afinal, Física é apenas mais uma aula dentro do motor Unity.

Vamos tentar enquadrar a aula de Física adicionando algum contexto. O que queremos aqui é saber onde a classe fica dentro do motor.

Classes do Unity Engine

Agora, vamos nos aprofundar na aula de Física em si.

E se agrupássemos os cento e poucos métodos em apenas três categorias simples? Eles serão muito mais fáceis de lembrar. Só precisamos dar a eles um nome bonito.

Assim:

Aulas de Física da Unidade

Basta olhar para isso! Organizado!

Veremos a lógica por trás desse agrupamento mais tarde, mas, por enquanto, vamos continuar com alguns conceitos-chave.

Raycasting pode não ser o que você pensa que é

Todos nós já usamos a expressão “ray casting” em algum momento. Parece lógico, mas e se você soubesse que isso não é totalmente preciso ou útil no Unity?

De todos os mais de 100 métodos mencionados acima, o único grupo que usa Rays são os Casters .

Você vê, para dar sentido ao seu próprio sistema, o Unity adaptou suas próprias convenções de nomenclatura de acordo com suas próprias necessidades. Parece bastante evidente que eles adaptaram as aulas do framework PhysX da Nvidia, mas como essa convenção não é muito explícita, as pessoas podem ficar confusas, e por isso analisamos primeiro a aula de Física.

Um termo que faz muito mais sentido no contexto do Unity, e que usaremos a partir de agora, é consultas de física .

Se você pensar sobre isso, é isso que é: você está examinando o mundo físico do seu jogo, não apenas lançando raios.

Se deixado sozinho, o Unity funcionará em segundo plano, fazendo muitos cálculos. É aí que as consultas de Física entram em cena. Eles são as ferramentas que você tem para avaliar o que está acontecendo.

Falando nisso, não podemos falar de física sem mencionar Newton. Continue lendo para descobrir por que o velho Isaac poderia estar errado.

Cena de física

Claro, você já sabe que uma cena no Unity é um ativo, certo?

O que você pode não saber é que o Unity armazena muitas coisas dentro de uma cena além de apenas gameObjects e Transforms.

Um componente importante de uma cena é a PhysicsScene .

Veja isso! Vá para Window>Analysis>Physics Debugger e maravilhe-se! Agora você tem acesso a uma realidade alternativa ao estilo de David Lynch – pense nisso como o Unity's Upside Down.

Exemplo de cena de física 1

Exemplo de cena de física 2

O PhysicsScene tem suas próprias aulas e métodos, e todos eles estão relacionados à Física. Esta é a sua melhor ferramenta quando se trata de depurar colisões e camadas.

Leve o seu tempo para explorar todas as configurações que esta nova janela tem; tudo que você precisa sobre Física está aqui.

Embora não conheçamos realmente o funcionamento interno, sabemos que o PhysicsScene funciona em conjunto com o PhysicsModule .

Ambos juntos, eles são o ensopado de bruxas onde toda a física é misturada em uma coisa.

Como é uma consulta de Física

Nesta parte, vamos tocar muito brevemente nos conceitos mais básicos de consultas de Física.

Os GameObjects precisam obedecer a determinados aspectos a serem considerados pela aula de Física. É por isso que na imagem abaixo, desenhamos o Rigidbody dentro do objeto e o Collider como uma espécie de limite.

Como regra geral, você pode pensar em Colliders como comunicadores públicos com o mundo exterior, enquanto Rigidbodies são mais como as propriedades privadas internas que um objeto possui.

Ambos trabalham em conjunto, mas enquanto os Colliders têm acesso aos seus Rigidbodies, os Rigidbodies não sabem nada sobre Colliders.

Corpo rígido do colisor de consulta de física

Em suma, tanto Colliders quanto Rigidbodies são usados ​​para descobrir o que está acontecendo e o que acontecerá a seguir no mundo físico do seu jogo.

Mas, e se você não quiser esperar para saber o que vai acontecer? E se você precisar saber com antecedência, para poder agir? E se você não quiser estar lá de qualquer maneira?

O nome da técnica que permite determinar isso é, você adivinhou - uma consulta de Física.

Na próxima imagem, você verá uma simples consulta de Física:

Cápsula de consulta física

O que você vê lá é um objeto Source e um Target. Como dissemos, queremos saber as coisas com antecedência. Ter acesso a ele nos dá muitas oportunidades para codificar reações interessantes.

Podemos dizer que um Hit ocorre quando dois Colliders estão ao mesmo tempo e espaço; eles estão se sobrepondo. Em outras palavras, eles estão dando um aperto de mão. É daí que vem o RaycastHit.

Quando dois corpos rígidos estão ao mesmo tempo e espaço, pensamos em forças ou colisões de Penetração e Despenetração ; mas isso fica para outro tutorial.

Recapitular

Apenas como uma breve recapitulação do que você viu até agora. Vimos o que é a aula de Física e onde ela fica no motor. Dividimos todas as classes em grupos mnemônicos. Vimos “o outro lado” da física. Estabelecemos algumas palavras apropriadas para entender o que está acontecendo em nível técnico. E também explicamos como é uma consulta de física.

Vamos para mais.

Explicando Damas, Conjuradores e Sobrepostos

Explicaremos como e por que dividimos esses três grupos.

Em primeiro lugar. Vamos concordar com isso: todas as consultas de Física…

  • espaço da sonda
  • use GeometryCasters (linhas, raios, esferas, cubos ou cápsulas)
  • pode ignorar camadas
  • pode ignorar Gatilhos
  • pode participar dos retornos de chamada (eventos) do Unity

Agora que você sabe o que todas as consultas têm em comum, vamos ver algumas diferenças.

jogo de damas

  • O tipo mais simples de todos
  • Eles não varrem; são formas estacionárias.
  • Eles não recuperam informações além de verdadeiras ou falsas
    . Eles perguntam à Unity: Você bateu em alguma coisa? Respostas do Unity: Sim/Não

Rodízios

  • Eles se movem/varrem. A consulta viaja pelo espaço
  • Eles recuperam RaycastHit: uma estrutura cheia de informações valiosas
  • Eles recuperam bool
  • Eles fornecem informações sobre um ou vários hits na forma de Arrays
  • É fácil entendê-los se você pensar em futuras colisões (detecções precoces)
  • Pergunte à Unidade: Vou jogar esta [forma] em linha reta. Se acertar alguma coisa, me dê todos os dados do RaycastHit sobre isso

Sobrepostos

  • Eles não varrem ou se movem
  • Eles apenas recuperam Arrays (de Colliders)
  • É mais fácil entendê-los se você acha que eles veem de dentro para fora o que está acontecendo
  • Eles se importam se duas coisas estão no mesmo lugar ao mesmo tempo.
  • Eles perguntam à Unidade: Eu colocarei esta [forma] na minha frente. Se algo aparecer dentro dele, me dê todos os dados sobre o Collider de todos os objetos dentro dele.

Quebrando a terceira lei de Newton

Lembra da terceira lei de Newton? Aquele sobre ação e reação? Mal sabia ele sobre videogames.

Uma das coisas mais curiosas que os videogames têm é que, apesar de nossos mais sinceros esforços para torná-los realistas, eles continuarão sendo videogames.

Nos videogames, as reações não seguem necessariamente uma ação. Os videogames nos dão essa grande oportunidade de seqüestrar a terceira regra de Newton.

Nos videogames, o terceiro de Newton é assim:

Ação>análise possível>reação possível .

Usar a palavra consulta faz muito mais sentido agora. Essas consultas são, por natureza, uma detecção precoce do mundo. Podemos pegar e analisar o que está acontecendo. Podemos então agir antes que algo mais aconteça.

Pensar, não é o mesmo que acontece na literatura?

Explicando o repositório

O escritor criou um repositório público com um projeto do Unity para que todos possam aprender. Se você ainda tiver problemas para entender o Raycasting no Unity, espero que isso o ajude a entender.

Representação Visual de Consulta Física

Dentro, você encontrará uma representação visual dos métodos mais importantes de consultas de Física que o Unity possui. Eles descrevem claramente o que está acontecendo em cada método. Continuaremos a adicionar e aprimorar esse repositório para todos vocês.

Você nem precisa apertar o play para ver as consultas em ação; você pode vê-lo em tempo de editor. E, o que é melhor, não há truques extravagantes no código. Você pode simplesmente pegar o código e colá-lo em seus jogos para experimentá-los.

Por favor, por cortesia, faça referência a nós ou ao escritor – nem mesmo a Unity ousou fazer tanto!

Não Alocação

Nesta seção, discutiremos a relação entre consultas físicas, alocação de memória, armazenamento em buffer e consultas NonAlloc.

Alocação

Toda vez que você cria algo em código, você aloca memória. Porque alocar significa “atribuir”. Então, as alocações são boas... até que não sejam.

Então, quando as alocações são uma coisa ruim?

Em geral, as alocações são ruins quando você:

  • não estão sendo responsáveis ​​com a alocação
  • não sei o que você está alocando
  • perder o controle sobre o processo
  • esquecê-los
  • não vai usá-lo de qualquer maneira (procure YAGNI)

Então, qual é a relação com as consultas de Física?

Isso é fácil, cada versão de consulta de Física é feita sob medida para resolver um ou dois dos problemas mencionados acima de cada vez. Com o tempo, cada consulta de Física tem suas vantagens e desvantagens.

Amortecedor

Agora, vamos passar para os buffers.

Com base na documentação do Unity e nas melhores práticas de programação dos melhores dos melhores, vamos declarar algumas máximas aqui:

  1. Buffer tudo em vez de criar coisas em tempo de execução.
  2. Procure 0 alocações irresponsáveis ​​sempre que puder.

Não Alocação

Nos métodos NonAlloc, o Unity garante que você aloque memória de forma responsável (pré-alocar) antes de usá-la. Como os arrays são um tipo de referência, você pode passá-lo como um parâmetro. O Unity não se importa com o conteúdo dessa matriz, apenas se preocupa com o tamanho.

Dê uma olhada neste:

public static int OverlapSphereNonAlloc(Vector3 position, float radius, Collider[] results)

Veja que o Unity está pedindo uma matriz de Colliders?

Pense nisso como um cubo de Rubik. Você o entrega ao Unity e, internamente, ele embaralha os dados antes de devolvê-los a você. O método não gerará lixo dessa maneira, porque o Unity não precisará criar um novo array.

É por isso que se chama NonAlloc, porque eles não alocam memória, você sim!

Por outro lado, outras versões criam um novo array toda vez que você o chama.

Por exemplo:

public static Collider[] OverlapSphere(Vector3 position, float radius)

Isso significa que se você chamá-lo novamente, ele esquecerá o array antigo e esperará que o coletor de lixo o descarte.

Fato ou truque

Se você ler os blogs ou fóruns da Unity, perceberá que as pessoas perdem a cabeça com esse tópico, tentaremos fazer o nosso melhor para explicar o que está acontecendo!

Nesta seção, apresentaremos alguns fatos gerais para ajudá-lo a chegar às suas próprias conclusões e não ser mais enganado. Nós lhe daremos ferramentas para ajudá-lo a organizar e escolher o método que você precisa.

Fato 1: Você não pode chamar os métodos de física do Unity diretamente

A maioria dos métodos do Unity são privados. O que você está realmente chamando são, na verdade, métodos wrapper (sobrecargas, se você quiser). Mesmo se você pudesse, não esqueça que o núcleo do Unity é C++.

Você chama wrappers de método; então eles chamam outros wrappers; wrappers chamam métodos raiz; métodos root chamam outras classes; essas classes têm mais wrappers internos e assim por diante, até você atingir a parede do Unity C#/C++. É assim mesmo. Você não pode controlá-lo, não mudá-lo.

Para você ter uma ideia, suponha que você chame a versão mais simples de CapsuleCast():

Physics.CapsuleCast(point1, point2, radius, direction, maxDistance);

Physics.CapsuleCast() (um método wrapper) chama o CapsuleCast() “raiz”

Essa raiz chama outro CapsuleCast() dentro do PhysicsScene.

A partir daí, é feita uma chamada para InternalCapsultCast(). A partir daí, uma consulta é criada. A partir daí, há uma chamada para alguma classe que pede outra versão chamada Versões injetadas e aí você bate na parede da camada C#/C++.

Fato 2: Chame métodos com base apenas no que você precisa

Então, você ainda está hesitante sobre qual método usar. Você se pergunta qual é mais rápido ou qual é melhor. Não tem problema, nós preparamos esta abordagem para ajudá-lo. Atenção, esta imagem é meramente ilustrativa.

Fluxograma da aula de física

Como pensamento final: lembre-se do que dissemos em 1. Não perca a cabeça com microotimizações. Apenas seja responsável por suas alocações.

Fato 3: As consultas de física são 100 faces da mesma moeda

Fomos ainda mais longe; criamos uma Planilha Google completa onde você pode comparar e contrastar todos os métodos. Você logo perceberá que eles têm mais em comum do que não. Isso porque eles foram muito bem planejados para os padrões do Unity.

Você pode pesquisar cada método. Neste exemplo, vamos ver como filtrar apenas por métodos que usam ray como parâmetros:

Exemplo de tela de rodízio

Fato 4: O mito do clichê

Se voltarmos ao primeiro fato; toda a camada C# é clichê se você pensar sobre isso. Agora, wrappers não são clichê, pois são ferramentas que ajudam você a filtrar para escolher um método que atenda às suas necessidades.

Lembre-se dessa coisa feia:

Captura de tela de exemplo do Unity

Nós transformamos isso em:

Exemplo de limpeza do rodízio da cápsula

Observe que helper.cs é uma versão de código legível por humanos e não deve ser usado para codificação como está. Este arquivo apenas retrata as aulas de Física de forma organizada.

atuação

Uma nota final. Não queremos parecer pessimistas aqui, mas afinal, o que é desempenho?

O que é mais performático?

Código super rápido que você não entende, não pode manter, não controla, mas não cria lixo?

Ou

Um código um pouco lento que cria um pouco de lixo, mas é curto, fácil de ler e de manutenção por juniores?

Testes

Como isenção de responsabilidade, esses testes foram executados usando o criador de perfil normal do Unity. Não estávamos preocupados com os valores brutos factuais, mas com o contraste proporcional no desempenho (lixo). Você também pode testá-lo, nós fornecemos uma cena onde você pode criar a sua.

Os três casos de teste foram executados contra 1400 colisores. Cada caso tem dois minutos de duração. O método utilizado é o BoxOverlap.

A estrutura dos testes é esta:

Teste:

  • Tempo: Tempo que a tarefa levou para concluir esse quadro: X milissegundos (ms)
  • Lixo por quadro: quantidade X em KiloBytes (KB) de lixo gerado por quadro (/frame)
  • Lixo por segundo: quantidade X de lixo multiplicada por 60 quadros, então obtemos a quantidade em 1 segundo
  • Lixo por minuto: Esse resultado é multiplicado por 60 segundos para estimar o lixo em 1 minuto se não for coletado

O feio

Nesse caso, usamos o método BoxOverlap, mas com a pior ideia possível. Para armazenar em cache o array dentro da função Update. Acredite ou não, houve um tempo em que os desenvolvedores do Unity recomendavam essa prática.

  • Tempo: 0,83ms
  • Lixo por quadro: 22,5 KB G/F
  • Lixo por segundo: 22,5 KB G/F x 60 F = 1350 KB G/s [1,35 MB G/s]
  • Lixo por minuto: 1350 KB sx 60 s = 80001 KB G/m [80 MB G/m]

Você viu aquilo? Imagine se você estiver executando com 1 GB de memória. Seu jogo não só leva 80 MB de lixo por minuto, mas também certamente irá congelar ou gaguejar toda vez que tiver que despejar tanto lixo e apenas alocar 1 lista simples. Isso é feio!

O mal

Este caso é o mesmo de antes, mas armazena em cache a matriz antecipadamente e fora do método Update.

  • Tempo: 0,77ms
  • Lixo por quadro: 11,8 KB G/F
  • Lixo por segundo: 11,8 KB G/F x 60 F = 708 KB G/s
  • Lixo por minuto: 708 KB x 60 s = 42 MB G/min

Isso é metade do feio como antes.

O bom

Não há muito a dizer.

  • Tempo: 0,1 ms
  • Lixo por quadro: 0 BG/F
  • Lixo por segundo: 0 x 60 x 60 = 0 BG/s
  • Lixo por minuto: o paraíso na terra!

Camadas: ignorando uma ou várias camadas

Dissemos que cada consulta de Física pode ignorar camadas.

O nome do struct é LayerMask e pode enganá-lo porque é singular. Mas esse struct especial está diretamente ligado às entranhas do Unity, então ele conhece todas as suas camadas em seu projeto. Isso é perfeito porque você só precisa de um para acessar todos.

Se você olhar para cima na cena 3D dentro do repositório, você encontrará uma Camada de Ignorar Box Cast. Esses gameObjects têm um tipo de cubo muito especial (roxo). Se você clicar nele, verá que ele pertence a uma camada personalizada chamada “SpecialCube”.

Agora, se você selecionar o Reporter, verá que ele possui o Script “BoxCasterIgnoreLayer”. Ignorando a camada, onde está o “SpecialCube”, basta escolher essa camada e passá-la para a consulta Física.

Camada de Ignorar Box Caster

O código fica assim:

Box Caster Ignorar código de camada

PrivateVoidPerformCast

Se você quiser adicionar mais camadas, basta escolher mais no inspetor.

Conclusão

Agora que você terminou este artigo, esperamos que sua compreensão da Física da Unity seja muito mais abrangente agora.

Lembre-se de que agora você tem um projeto do Unity com todas as consultas, uma classe Helper com texto limpo e legível e uma planilha do Google para filtrar classes — ah, e um arquivo drawio para ajudá-lo a decidir qual método usar.

Sinta-se à vontade para entrar em contato conosco se achar que devemos adicionar algo.

Sabemos que este artigo é mais teórico do que uma abordagem prática. Mas, agora você tem a base para entender tudo sobre a aula de Física tanto em 3D quanto em 2D, pois este artigo prepara o terreno para muitos conteúdos futuros.

Não hesite em comentar ou entrar em contato conosco. Apreciar!

Fonte: https://blog.logrocket.com/2d-3d-raycasting-unity/

#unity 

What is GEEK

Buddha Community

Compreendendo O Raycasting 2D E 3D No Unity
Mélanie  Faria

Mélanie Faria

1659024000

Compreendendo O Raycasting 2D E 3D No Unity

O Raycasting é frequentemente o assunto de debates acalorados em tutoriais, fóruns e blogs. Não só de entusiastas, mas também de desenvolvedores avançados que tendem a ter dificuldades em entender as nuances da aula de Física.

Tudo bem se você não estiver completamente familiarizado com a documentação oficial do Unity. À custa de explicações exaustivas e detalhadas, eles adotam uma abordagem geral e simplista para cobrir mais terrenos.

É por isso que estou tão feliz que você encontrou este artigo enquanto exploramos o Raycasting em detalhes!

Queríamos nos aprofundar nisso, e é por isso que este artigo tem uma abordagem muito teórica. A ideia principal é ajudar todos a realmente entender o que está acontecendo sob o capô do Raycasting no Unity.

Também esperamos que você se divirta e considere este artigo um recurso completo para Raycasting no Unity.

Entendendo a Física na Unidade

Você já se sentiu inseguro sobre qual método escolher? Ou hesitante sobre o que torna cada método diferente?

Isso é normal. Considere que o Unity oferece 22 métodos prontos para uso e, se você levar em conta as sobrecargas, obtém mais de 100 métodos diferentes para usar em sua cena - isso é muito!

Ah, e isso é apenas para 3D. Não é à toa que as pessoas entram em pânico!

Vamos dar uma olhada no Unity:

Captura de tela de exemplo do Unity

Assustador, hein?

Não se preocupe. Afinal, Física é apenas mais uma aula dentro do motor Unity.

Vamos tentar enquadrar a aula de Física adicionando algum contexto. O que queremos aqui é saber onde a classe fica dentro do motor.

Classes do Unity Engine

Agora, vamos nos aprofundar na aula de Física em si.

E se agrupássemos os cento e poucos métodos em apenas três categorias simples? Eles serão muito mais fáceis de lembrar. Só precisamos dar a eles um nome bonito.

Assim:

Aulas de Física da Unidade

Basta olhar para isso! Organizado!

Veremos a lógica por trás desse agrupamento mais tarde, mas, por enquanto, vamos continuar com alguns conceitos-chave.

Raycasting pode não ser o que você pensa que é

Todos nós já usamos a expressão “ray casting” em algum momento. Parece lógico, mas e se você soubesse que isso não é totalmente preciso ou útil no Unity?

De todos os mais de 100 métodos mencionados acima, o único grupo que usa Rays são os Casters .

Você vê, para dar sentido ao seu próprio sistema, o Unity adaptou suas próprias convenções de nomenclatura de acordo com suas próprias necessidades. Parece bastante evidente que eles adaptaram as aulas do framework PhysX da Nvidia, mas como essa convenção não é muito explícita, as pessoas podem ficar confusas, e por isso analisamos primeiro a aula de Física.

Um termo que faz muito mais sentido no contexto do Unity, e que usaremos a partir de agora, é consultas de física .

Se você pensar sobre isso, é isso que é: você está examinando o mundo físico do seu jogo, não apenas lançando raios.

Se deixado sozinho, o Unity funcionará em segundo plano, fazendo muitos cálculos. É aí que as consultas de Física entram em cena. Eles são as ferramentas que você tem para avaliar o que está acontecendo.

Falando nisso, não podemos falar de física sem mencionar Newton. Continue lendo para descobrir por que o velho Isaac poderia estar errado.

Cena de física

Claro, você já sabe que uma cena no Unity é um ativo, certo?

O que você pode não saber é que o Unity armazena muitas coisas dentro de uma cena além de apenas gameObjects e Transforms.

Um componente importante de uma cena é a PhysicsScene .

Veja isso! Vá para Window>Analysis>Physics Debugger e maravilhe-se! Agora você tem acesso a uma realidade alternativa ao estilo de David Lynch – pense nisso como o Unity's Upside Down.

Exemplo de cena de física 1

Exemplo de cena de física 2

O PhysicsScene tem suas próprias aulas e métodos, e todos eles estão relacionados à Física. Esta é a sua melhor ferramenta quando se trata de depurar colisões e camadas.

Leve o seu tempo para explorar todas as configurações que esta nova janela tem; tudo que você precisa sobre Física está aqui.

Embora não conheçamos realmente o funcionamento interno, sabemos que o PhysicsScene funciona em conjunto com o PhysicsModule .

Ambos juntos, eles são o ensopado de bruxas onde toda a física é misturada em uma coisa.

Como é uma consulta de Física

Nesta parte, vamos tocar muito brevemente nos conceitos mais básicos de consultas de Física.

Os GameObjects precisam obedecer a determinados aspectos a serem considerados pela aula de Física. É por isso que na imagem abaixo, desenhamos o Rigidbody dentro do objeto e o Collider como uma espécie de limite.

Como regra geral, você pode pensar em Colliders como comunicadores públicos com o mundo exterior, enquanto Rigidbodies são mais como as propriedades privadas internas que um objeto possui.

Ambos trabalham em conjunto, mas enquanto os Colliders têm acesso aos seus Rigidbodies, os Rigidbodies não sabem nada sobre Colliders.

Corpo rígido do colisor de consulta de física

Em suma, tanto Colliders quanto Rigidbodies são usados ​​para descobrir o que está acontecendo e o que acontecerá a seguir no mundo físico do seu jogo.

Mas, e se você não quiser esperar para saber o que vai acontecer? E se você precisar saber com antecedência, para poder agir? E se você não quiser estar lá de qualquer maneira?

O nome da técnica que permite determinar isso é, você adivinhou - uma consulta de Física.

Na próxima imagem, você verá uma simples consulta de Física:

Cápsula de consulta física

O que você vê lá é um objeto Source e um Target. Como dissemos, queremos saber as coisas com antecedência. Ter acesso a ele nos dá muitas oportunidades para codificar reações interessantes.

Podemos dizer que um Hit ocorre quando dois Colliders estão ao mesmo tempo e espaço; eles estão se sobrepondo. Em outras palavras, eles estão dando um aperto de mão. É daí que vem o RaycastHit.

Quando dois corpos rígidos estão ao mesmo tempo e espaço, pensamos em forças ou colisões de Penetração e Despenetração ; mas isso fica para outro tutorial.

Recapitular

Apenas como uma breve recapitulação do que você viu até agora. Vimos o que é a aula de Física e onde ela fica no motor. Dividimos todas as classes em grupos mnemônicos. Vimos “o outro lado” da física. Estabelecemos algumas palavras apropriadas para entender o que está acontecendo em nível técnico. E também explicamos como é uma consulta de física.

Vamos para mais.

Explicando Damas, Conjuradores e Sobrepostos

Explicaremos como e por que dividimos esses três grupos.

Em primeiro lugar. Vamos concordar com isso: todas as consultas de Física…

  • espaço da sonda
  • use GeometryCasters (linhas, raios, esferas, cubos ou cápsulas)
  • pode ignorar camadas
  • pode ignorar Gatilhos
  • pode participar dos retornos de chamada (eventos) do Unity

Agora que você sabe o que todas as consultas têm em comum, vamos ver algumas diferenças.

jogo de damas

  • O tipo mais simples de todos
  • Eles não varrem; são formas estacionárias.
  • Eles não recuperam informações além de verdadeiras ou falsas
    . Eles perguntam à Unity: Você bateu em alguma coisa? Respostas do Unity: Sim/Não

Rodízios

  • Eles se movem/varrem. A consulta viaja pelo espaço
  • Eles recuperam RaycastHit: uma estrutura cheia de informações valiosas
  • Eles recuperam bool
  • Eles fornecem informações sobre um ou vários hits na forma de Arrays
  • É fácil entendê-los se você pensar em futuras colisões (detecções precoces)
  • Pergunte à Unidade: Vou jogar esta [forma] em linha reta. Se acertar alguma coisa, me dê todos os dados do RaycastHit sobre isso

Sobrepostos

  • Eles não varrem ou se movem
  • Eles apenas recuperam Arrays (de Colliders)
  • É mais fácil entendê-los se você acha que eles veem de dentro para fora o que está acontecendo
  • Eles se importam se duas coisas estão no mesmo lugar ao mesmo tempo.
  • Eles perguntam à Unidade: Eu colocarei esta [forma] na minha frente. Se algo aparecer dentro dele, me dê todos os dados sobre o Collider de todos os objetos dentro dele.

Quebrando a terceira lei de Newton

Lembra da terceira lei de Newton? Aquele sobre ação e reação? Mal sabia ele sobre videogames.

Uma das coisas mais curiosas que os videogames têm é que, apesar de nossos mais sinceros esforços para torná-los realistas, eles continuarão sendo videogames.

Nos videogames, as reações não seguem necessariamente uma ação. Os videogames nos dão essa grande oportunidade de seqüestrar a terceira regra de Newton.

Nos videogames, o terceiro de Newton é assim:

Ação>análise possível>reação possível .

Usar a palavra consulta faz muito mais sentido agora. Essas consultas são, por natureza, uma detecção precoce do mundo. Podemos pegar e analisar o que está acontecendo. Podemos então agir antes que algo mais aconteça.

Pensar, não é o mesmo que acontece na literatura?

Explicando o repositório

O escritor criou um repositório público com um projeto do Unity para que todos possam aprender. Se você ainda tiver problemas para entender o Raycasting no Unity, espero que isso o ajude a entender.

Representação Visual de Consulta Física

Dentro, você encontrará uma representação visual dos métodos mais importantes de consultas de Física que o Unity possui. Eles descrevem claramente o que está acontecendo em cada método. Continuaremos a adicionar e aprimorar esse repositório para todos vocês.

Você nem precisa apertar o play para ver as consultas em ação; você pode vê-lo em tempo de editor. E, o que é melhor, não há truques extravagantes no código. Você pode simplesmente pegar o código e colá-lo em seus jogos para experimentá-los.

Por favor, por cortesia, faça referência a nós ou ao escritor – nem mesmo a Unity ousou fazer tanto!

Não Alocação

Nesta seção, discutiremos a relação entre consultas físicas, alocação de memória, armazenamento em buffer e consultas NonAlloc.

Alocação

Toda vez que você cria algo em código, você aloca memória. Porque alocar significa “atribuir”. Então, as alocações são boas... até que não sejam.

Então, quando as alocações são uma coisa ruim?

Em geral, as alocações são ruins quando você:

  • não estão sendo responsáveis ​​com a alocação
  • não sei o que você está alocando
  • perder o controle sobre o processo
  • esquecê-los
  • não vai usá-lo de qualquer maneira (procure YAGNI)

Então, qual é a relação com as consultas de Física?

Isso é fácil, cada versão de consulta de Física é feita sob medida para resolver um ou dois dos problemas mencionados acima de cada vez. Com o tempo, cada consulta de Física tem suas vantagens e desvantagens.

Amortecedor

Agora, vamos passar para os buffers.

Com base na documentação do Unity e nas melhores práticas de programação dos melhores dos melhores, vamos declarar algumas máximas aqui:

  1. Buffer tudo em vez de criar coisas em tempo de execução.
  2. Procure 0 alocações irresponsáveis ​​sempre que puder.

Não Alocação

Nos métodos NonAlloc, o Unity garante que você aloque memória de forma responsável (pré-alocar) antes de usá-la. Como os arrays são um tipo de referência, você pode passá-lo como um parâmetro. O Unity não se importa com o conteúdo dessa matriz, apenas se preocupa com o tamanho.

Dê uma olhada neste:

public static int OverlapSphereNonAlloc(Vector3 position, float radius, Collider[] results)

Veja que o Unity está pedindo uma matriz de Colliders?

Pense nisso como um cubo de Rubik. Você o entrega ao Unity e, internamente, ele embaralha os dados antes de devolvê-los a você. O método não gerará lixo dessa maneira, porque o Unity não precisará criar um novo array.

É por isso que se chama NonAlloc, porque eles não alocam memória, você sim!

Por outro lado, outras versões criam um novo array toda vez que você o chama.

Por exemplo:

public static Collider[] OverlapSphere(Vector3 position, float radius)

Isso significa que se você chamá-lo novamente, ele esquecerá o array antigo e esperará que o coletor de lixo o descarte.

Fato ou truque

Se você ler os blogs ou fóruns da Unity, perceberá que as pessoas perdem a cabeça com esse tópico, tentaremos fazer o nosso melhor para explicar o que está acontecendo!

Nesta seção, apresentaremos alguns fatos gerais para ajudá-lo a chegar às suas próprias conclusões e não ser mais enganado. Nós lhe daremos ferramentas para ajudá-lo a organizar e escolher o método que você precisa.

Fato 1: Você não pode chamar os métodos de física do Unity diretamente

A maioria dos métodos do Unity são privados. O que você está realmente chamando são, na verdade, métodos wrapper (sobrecargas, se você quiser). Mesmo se você pudesse, não esqueça que o núcleo do Unity é C++.

Você chama wrappers de método; então eles chamam outros wrappers; wrappers chamam métodos raiz; métodos root chamam outras classes; essas classes têm mais wrappers internos e assim por diante, até você atingir a parede do Unity C#/C++. É assim mesmo. Você não pode controlá-lo, não mudá-lo.

Para você ter uma ideia, suponha que você chame a versão mais simples de CapsuleCast():

Physics.CapsuleCast(point1, point2, radius, direction, maxDistance);

Physics.CapsuleCast() (um método wrapper) chama o CapsuleCast() “raiz”

Essa raiz chama outro CapsuleCast() dentro do PhysicsScene.

A partir daí, é feita uma chamada para InternalCapsultCast(). A partir daí, uma consulta é criada. A partir daí, há uma chamada para alguma classe que pede outra versão chamada Versões injetadas e aí você bate na parede da camada C#/C++.

Fato 2: Chame métodos com base apenas no que você precisa

Então, você ainda está hesitante sobre qual método usar. Você se pergunta qual é mais rápido ou qual é melhor. Não tem problema, nós preparamos esta abordagem para ajudá-lo. Atenção, esta imagem é meramente ilustrativa.

Fluxograma da aula de física

Como pensamento final: lembre-se do que dissemos em 1. Não perca a cabeça com microotimizações. Apenas seja responsável por suas alocações.

Fato 3: As consultas de física são 100 faces da mesma moeda

Fomos ainda mais longe; criamos uma Planilha Google completa onde você pode comparar e contrastar todos os métodos. Você logo perceberá que eles têm mais em comum do que não. Isso porque eles foram muito bem planejados para os padrões do Unity.

Você pode pesquisar cada método. Neste exemplo, vamos ver como filtrar apenas por métodos que usam ray como parâmetros:

Exemplo de tela de rodízio

Fato 4: O mito do clichê

Se voltarmos ao primeiro fato; toda a camada C# é clichê se você pensar sobre isso. Agora, wrappers não são clichê, pois são ferramentas que ajudam você a filtrar para escolher um método que atenda às suas necessidades.

Lembre-se dessa coisa feia:

Captura de tela de exemplo do Unity

Nós transformamos isso em:

Exemplo de limpeza do rodízio da cápsula

Observe que helper.cs é uma versão de código legível por humanos e não deve ser usado para codificação como está. Este arquivo apenas retrata as aulas de Física de forma organizada.

atuação

Uma nota final. Não queremos parecer pessimistas aqui, mas afinal, o que é desempenho?

O que é mais performático?

Código super rápido que você não entende, não pode manter, não controla, mas não cria lixo?

Ou

Um código um pouco lento que cria um pouco de lixo, mas é curto, fácil de ler e de manutenção por juniores?

Testes

Como isenção de responsabilidade, esses testes foram executados usando o criador de perfil normal do Unity. Não estávamos preocupados com os valores brutos factuais, mas com o contraste proporcional no desempenho (lixo). Você também pode testá-lo, nós fornecemos uma cena onde você pode criar a sua.

Os três casos de teste foram executados contra 1400 colisores. Cada caso tem dois minutos de duração. O método utilizado é o BoxOverlap.

A estrutura dos testes é esta:

Teste:

  • Tempo: Tempo que a tarefa levou para concluir esse quadro: X milissegundos (ms)
  • Lixo por quadro: quantidade X em KiloBytes (KB) de lixo gerado por quadro (/frame)
  • Lixo por segundo: quantidade X de lixo multiplicada por 60 quadros, então obtemos a quantidade em 1 segundo
  • Lixo por minuto: Esse resultado é multiplicado por 60 segundos para estimar o lixo em 1 minuto se não for coletado

O feio

Nesse caso, usamos o método BoxOverlap, mas com a pior ideia possível. Para armazenar em cache o array dentro da função Update. Acredite ou não, houve um tempo em que os desenvolvedores do Unity recomendavam essa prática.

  • Tempo: 0,83ms
  • Lixo por quadro: 22,5 KB G/F
  • Lixo por segundo: 22,5 KB G/F x 60 F = 1350 KB G/s [1,35 MB G/s]
  • Lixo por minuto: 1350 KB sx 60 s = 80001 KB G/m [80 MB G/m]

Você viu aquilo? Imagine se você estiver executando com 1 GB de memória. Seu jogo não só leva 80 MB de lixo por minuto, mas também certamente irá congelar ou gaguejar toda vez que tiver que despejar tanto lixo e apenas alocar 1 lista simples. Isso é feio!

O mal

Este caso é o mesmo de antes, mas armazena em cache a matriz antecipadamente e fora do método Update.

  • Tempo: 0,77ms
  • Lixo por quadro: 11,8 KB G/F
  • Lixo por segundo: 11,8 KB G/F x 60 F = 708 KB G/s
  • Lixo por minuto: 708 KB x 60 s = 42 MB G/min

Isso é metade do feio como antes.

O bom

Não há muito a dizer.

  • Tempo: 0,1 ms
  • Lixo por quadro: 0 BG/F
  • Lixo por segundo: 0 x 60 x 60 = 0 BG/s
  • Lixo por minuto: o paraíso na terra!

Camadas: ignorando uma ou várias camadas

Dissemos que cada consulta de Física pode ignorar camadas.

O nome do struct é LayerMask e pode enganá-lo porque é singular. Mas esse struct especial está diretamente ligado às entranhas do Unity, então ele conhece todas as suas camadas em seu projeto. Isso é perfeito porque você só precisa de um para acessar todos.

Se você olhar para cima na cena 3D dentro do repositório, você encontrará uma Camada de Ignorar Box Cast. Esses gameObjects têm um tipo de cubo muito especial (roxo). Se você clicar nele, verá que ele pertence a uma camada personalizada chamada “SpecialCube”.

Agora, se você selecionar o Reporter, verá que ele possui o Script “BoxCasterIgnoreLayer”. Ignorando a camada, onde está o “SpecialCube”, basta escolher essa camada e passá-la para a consulta Física.

Camada de Ignorar Box Caster

O código fica assim:

Box Caster Ignorar código de camada

PrivateVoidPerformCast

Se você quiser adicionar mais camadas, basta escolher mais no inspetor.

Conclusão

Agora que você terminou este artigo, esperamos que sua compreensão da Física da Unity seja muito mais abrangente agora.

Lembre-se de que agora você tem um projeto do Unity com todas as consultas, uma classe Helper com texto limpo e legível e uma planilha do Google para filtrar classes — ah, e um arquivo drawio para ajudá-lo a decidir qual método usar.

Sinta-se à vontade para entrar em contato conosco se achar que devemos adicionar algo.

Sabemos que este artigo é mais teórico do que uma abordagem prática. Mas, agora você tem a base para entender tudo sobre a aula de Física tanto em 3D quanto em 2D, pois este artigo prepara o terreno para muitos conteúdos futuros.

Não hesite em comentar ou entrar em contato conosco. Apreciar!

Fonte: https://blog.logrocket.com/2d-3d-raycasting-unity/

#unity 

Nora Joy

1607328200

Why unity 3D is best for game app development

We can see an exponential growth in the game development industry today and the market for game development will increase day by day ,thanks to the increasing number of smartphone users and the technological advancements.Unity 3D is the trending game app development framework to serve the best quality.This game development framework enables developers to conduct 2D or 3D rendering with more than 1 mobile game to assist them in ratcheting. Apart from this the great qualities like cross-platform integration with asset management, high-end visual quality, intuitive design, interface flexibility and gameplay can now be leveraged.India is the leading game development hub and now people are** hire dedicated unity 3D developers in India** to create a high performing game app with best quality at affordable price which you can spread your games to larger audience.Lets have a look at why unity a 3D is the best platform for game development.
**
Support cross-platform**

Cross platforms save time and money as a single script can be compiled and used for multiple platforms such as Android, iOS, PC, Web and even Mac etcFeatures such as agile methodology allow speedy prototyping and constant releases to speed up the process of game development.

Open source

The large open source community of Unity 3D with an easy-to-understand documentation allows developers to come up with the most accurate and precise code and it saves a lot of time.

Graphics

Unity 3D can support graphic rendering from engines that use OpenGL ES, OpenGL and Direct 3D, as well as applications like 3DS Max, Blender and Adobe Photoshop. It enables high-quality audio and visual effects to be adapted without any distortion or compromise with quality.
**
Play mode feature
**
This feature allows easy and hassle free testing by allowing developers to look and play within the game instantly, evaluate and even review it,and also the Play or Play Plus mode can also be used to achieve frame to frame referencing.

Debugging

With Unity game development, the analysis and modification is incredibly easier as all the game factors are seen during ongoing interaction, which helps the engineers to troubleshoot the process at runtime.

These advantages make unity as the best game development platform and people h**ire dedicated unity 3D developers** for the best output.With Unity, countless games have been made and some of them have become instant classics.Take a look at some of the all-time trending Unity games .

  • Kerbal Space Program

  • Firewatch

  • Subnautica

  • Hollow Knight

  • Arizona Sunshine

  • Cuphead

  • Ori And The Blind Forest

  • Hearthstone

  • Beat Saber

  • Cities Skylines

  • Getting Over It With Bennett Foddy
    In terms of graphics, gameplay, consistency and realism, technical advances and rise of new technologies like AR & VR and AI & ML make the game more ambitious day by day.Today the entire global game development is booming and mobile gaming business are hire unity 3D developers in India to meet this heavy market.**Hire dedicated unity 3D developers **will benefits the following,

  • International standard game app development at lower cost.

  • Skilled and experienced game developers

  • Faster time to market

  • Best infrastructure

Conclusion

Unity 3D has taken over the business and has altered the advancement of cross-platform app development paths. Unity 3D has already become the favourite of developers as they can import games created from iOS, PC, Play Store or other game consoles from other platforms and allow minimum game modifications to take full advantage of Unity 3D’s features. So if you have any game development hire unity 3D developers with great experience.

#hire unity 3 d developers in india #hire dedicated unity 3 d developers in india #hire unity 3 d programmers in india #hire unity 3 d developers #hire dedicated unity 3 d developers #hire unity 3 d programmers

Top-Notch 3d Design Services | 3d Printing Prototype Service

3D Design Service Provider

With the advancement in technology, many products have found a dire need to showcase their product virtually and to make the virtual experience as clear as actual a technology called 3D is used. The 3D technology allows a business to showcase their products in 3 dimensions virtually.

Want to develop an app that showcases anything in 3D?

WebClues Infotech with its expertise in mobile app development can seamlessly connect a technology that has the capability to change an industry with its integration in the mobile app. After successfully serving more than 950 projects WebClues Infotech is prepared with its highly skilled development team to serve you.

Want to know more about our 3D design app development?

Visit us at
https://www.webcluesinfotech.com/3d-design-services/

Visit: https://www.webcluesinfotech.com/3d-design-services/

Share your requirements https://www.webcluesinfotech.com/contact-us/

View Portfolio https://www.webcluesinfotech.com/portfolio/

#3d design service provide #3d design services #3d modeling design services #professional 3d design services #industrial & 3d product design services #3d web design & development company

Desmond Ivana

1602569524

The E-Scooters Wave Is Coming: Steer Your Business To Success

E-scooters are becoming more and more familiar. The compactness, coupled with the skill of evading jam-packed traffics, makes the fast-paced world lean towards this micro-mobility innovation. Besides, with COVID-19 propelling the need for safety and privacy, you do not have drivers in an E-scooters ecosystem! With the system being entirely automated, people can smart-lock and unlock E-scooters without any hassle.

Various top manufacturers are spending quality hours exhaustively on their R&D to shift from fuel-led automobiles to electric power-generating vehicles. Although people hesitate to make investments when it comes to buying an e-vehicle, using such vehicles for commuting is no big deal. If you’re an entrepreneur aiming to launch an Uber for E-Scooters app, now is the time to roll up your sleeves as E-scooters are being legalized in numerous countries, including New York.

Now, let’s discuss the remunerative advantages of E-scooters and why entrepreneurs needn’t hesitate to initiate their E-scooter App development.

Lucrative Benefits of E-Scooters

Outplay traffic effortlessly: One of the main concerns of people worldwide is not reaching the destination on time due to prolonged traffic. With four-wheelers becoming more predominant, the situation is steeping towards the worsening phase. With its compact nature, E-scooters can help people sail past traffic without a sweat. This way, people conserve and utilize their time efficiently.

The environmental impact: As simple as it may sound, automobiles pollute the environment on a massive scale. It is high-time people raise their concerns against environmental degradation. E-scooters are the best alternatives from the environmental perspective. These scooters run on a 500W electric motor, eliminating any form of pollution.

Inexpensive in every aspect: The maintenance and fuel costs of automobiles is way too high as vehicles get older. However, with an E-scooter, all it takes is a rechargeable battery with less or no maintenance at all. Moreover, entrepreneurs get to enhance their profits seamlessly, even after providing economical rides to passengers. There’s only an initial investment cost that an entrepreneur needs to take care of.

The 5-Step Workflow of an E-Scooters App

While building a smartphone application, it is essential to focus on the platform’s workflow. An E-scooter app with a user-friendly architecture and immersive workflow can create an instant impact among the audience. Let’s discuss the simple yet intuitive 5-step workflow here,

  • Users register with the platform and locate E-scooters nearby by enabling their location preferences.

  • Users choose their best-suited E-scooters based on numerous metrics like pricing, battery capacity, ratings, etc.

  • Users unlock the vehicle by scanning the QR code. They initiate their trip and drive towards their destination.

  • Upon reaching the destination, users park the E-scooters securely and smart-lock the vehicle.

  • The app displays the total fare with a detailed breakdown. Users pay the amount via a multitude of payment gateways and share their experience in the form of ratings & reviews.

Features that make the E-Scooter app stand apart

Apps like Lime, Bird, etc., have already set a benchmark when it comes to the E-Scooter app market. You need USPs to lure customer attention. Some of the unique elements worth-considering include,

  • QR scanning - To initiate and terminate rides.

  • In-app wallet - To pay for rides effortlessly.

  • Multi-lingual support - To access the app in the customers’ preferred language.

  • Schedule bookings - To book rides well-in-advance.

  • In-app chat/call - To establish a connection between the support team and users.

  • VoIP-based Call masking - To mask users’ contact details.

  • Geofencing - To map virtual boundaries and keep an eye on E-scooters.

Capitalize on the growing market

Establishing your E-Scooters Rental app at the spur of the moment is highly essential if you wish to scale your business in the shortest possible time. Some of the reasons to initiate your app development right away include,

The unexplored market: The E-Scooter market is still in its nascent stages. Rolling out an app with the right feature-set and approach can help you yield unrestricted revenue.

Competitors are experiencing massive growth: Apps like Lime, Bird, etc., witness unprecedented growth in the past few years. Lime was valued at $2.4 billion in 2019. On the other hand, Bird has spread across 100 cities in Europe. With competitors reaping profits, it is high-time entrepreneurs needn’t hesitate to invest in this business opportunity.

The ‘E’ shift among customers: People are gradually moving towards e-vehicles as a measure to conserve time and environment. By rolling out an on-demand app for E-scooters that is economical, people will inevitably turn towards your platform for the daily commute.

Conclusion

In this modern world, saving time and energy is the need of the hour. Add to that the indispensable role of conserving the environment. E-scooters cater to all these aspects comprehensively. Make the most out of the situation and have no second thoughts about initiating your E-Scooter app development.

#uber for e-scooters #e-scooter app development #e-scooter app #e-scooter rental app #uber like app for e-scooters #uber for e-scooters app

E-Learning App Development: Types, Cost & Features

The growth of the online modes for students has increased since the pandemic. This growth has been possible with the help of E-learning software systems. This software has shown a future with more opportunities, even in this pandemic. This market will grow to a high of 350 billion dollars by 2025. Due to this pandemic, most education organizations have shifted to online modes. So, naturally, this means the need for E-learning software systems will grow. So, do you have a complete idea for your E-learning applications and are planning to develop one for your organization? E-learning product development is not a very difficult process to handle. To make the process easier for you, we have added the types of e-learning apps, its features, benefits, development cost and much more in this blog. To read more click on the link.

#e-learning web portals #e-learning development companies #development of software for e-learning #e-learning web portalsmobile applications for e-learning #e-learning product development #app development