Compartilhar via


Configurando para movimentação e teletransporte de avatar

Visão geral

Para que os avatares da Malha se movam e se teletransportem em sua experiência com êxito, é importante seguir determinadas diretrizes de design. Este artigo contém informações sobre como configurar superfícies para movimentação e teletransporte, dicas para coisas como limites de movimento de avatar e design de colisor e uma seção detalhada sobre Camadas.

Diretrizes de movimento de avatar

Uma cena deve ter Colisores para o avatar andar e teletransportar. Em geral, um Colisor de Malha poli baixo que se ajusta firmemente à geometria visual produzirá os melhores resultados. Os Colisores de Caixa funcionam muito bem para cenários triviais, mas podem resultar em alguns problemas, como fazer com que o avatar fique preso nos cantos ou derrote os limites de altura da etapa.

Limites de movimento do avatar de malha:

Inclinação máxima andável: <45 graus
Altura máxima da etapa: 0,3
Raio da cápsula avatar: 0,3
Altura da cápsula avatar: 2
Altura do avatar: 1,8

Sugestões para obter melhores resultados:

  • Alinhe as superfícies de colisão com as superfícies visuais em que o avatar vai andar. Isso é importante para evitar problemas com a posição do avatar em relação à superfície visual (para evitar a flutuação ou o recorte).

  • Cantos arredondados ajudam a suavizar o movimento do avatar e impedir que o avatar ficar preso.

  • Para bloquear o movimento do avatar, use inclinações íngremes ou uma altura muito maior que a altura máxima da etapa.

    • Modifique a forma dos colisores para criar superfícies que são naturalmente difíceis ou impossíveis de atravessar para o avatar. Por exemplo, use um Colisor de Malha com uma forma irregular que não forneça uma superfície plana ou inclinação andável para o avatar ficar em pé.

    • Em alguns casos, um Colisor de Cápsulas ou uma forma arredondada semelhante em objetos ou áreas em que o avatar não deve andar pode ser suficiente. Essas formas não podem ser andáveis se a inclinação for íngreme o suficiente e fará com que o avatar deslize para fora.

Camadas de colisão

Objetos interativos são GameObjects com um colisor não disparador e geometria visual correspondente em uma das camadas de colisão de objeto. Avatares pode andar e ser posicionado em objetos com colisores não disparados, portanto, lembre-se de qual camada está sendo usada.

Para ter um posicionamento preciso de avatar e teletransporte, os colisores de cena precisam estar nas camadas apropriadas. O avatar do usuário local interagirá com (colidirá e continuará) com todos os colisores nas camadas que dão suporte a essas interações.

Quando o avatar é posicionado ou teletransportado, é importante que o avatar colida com um objeto "terra" e seja colocado consistentemente na mesma altura acima do solo (isso é chamado de "aterramento"). Se nenhum solo for detectado, o avatar cairá. Isso é aceitável se estiver acima do solo (não há nenhum dano de queda!), mas se o avatar for colocado abaixo do objeto "ground", o avatar poderá não registrar uma colisão com esse objeto, fazendo com que ele caia do ambiente e seja redesenhado. Se o avatar penetrar no chão durante o reposicionamento, ele será aterrado.

Todos os avatares em uma sessão devem estar em uma altura consistente. A posição do avatar será ajustada se sua altura mudar fora do intervalo. Por exemplo:

  • Um usuário vr vai fisicamente de e para uma posição sentada ou em pé. O movimento hmd faz com que o avatar na cena penetrar no chão ou estar muito mais alto verticalmente do que outros avatares.

  • Um script visual mal configurado teletransporta o avatar em uma posição que ele não se encaixa ou é verticalmente muito baixo.

Outra razão pela qual isso é importante é que quando a física avatar atualizar, se o avatar não estiver aterrado, ele saltará para a posição como resultado de sua cápsula colidindo com o chão e puxando o avatar para a nova posição. Isso é especialmente impactante para os usuários hmd porque movimentos não naturais como este podem ser indutores de náuseas.

Camadas com as quais o avatar interage e pode andar:

0 – Padrão
2 – Ignorar Raycast
4 - Água (apenas colisores de gatilho permitidos, não andáveis)
14 – GroundCollision (teletransportável)
18 – TriggerVolume (somente colisores de gatilho permitidos, não andáveis)
21 - IgnoreObjects
26 - Personalizado26
27 - Personalizado27
28 - Personalizado28
29 - IgnoreRealtimeLight
30 - WallCollision

Saiba mais sobre Camadas em um projeto de Malha.

Suporte a teletransporte

Para que uma cena dê suporte ao teletransporte, superfícies teletransportáveis (por exemplo, o piso ou o solo) devem ter colisores na camada GroundCollision . Há outras camadas passo a passo, mas apenas GroundCollision é teletransportável . A geometria visual não é teletransportável e não deve estar na camada GroundCollision ; somente colisores podem estar nessa camada. Camadas e colisões incorretas ou inconsistentes podem causar efeitos indesejáveis ao teletransportar ou encontrar o terreno.

Uma superfície teletransportável deve atender às seguintes condições:

  • Ele deve ter algum tipo de Colisor não disparador anexado (por exemplo, um Colisor de Malha ou Colisor de Caixa).
  • Sua Camada deve ser definida como GroundCollision.

Tenha cuidado com tetos baixos ou túneis; isso pode afetar o aterramento e o teletransporte de avatar. Por exemplo, a física do avatar ou o arco do teletransporte podem se cruzar ou interagir com o colisor acima deles. A altura do solo ao telhado para uma área percorrível deve ser maior do que a altura da cápsula avatar de 2m. Precisa haver um pequeno buffer de espaço acima da cabeça do avatar, especialmente se o telhado estiver inclinado em vez de plano.

A física de locomoção fornece um movimento suave de avatar com todos os colisores interacionáveis dos participantes e impede a penetração de áreas muito pequenas para colisão de avatar. No entanto, a colisão de terra não autorizada ou a geometria de ambiente problemática, como formas de cunha ou espaços muito estreitos, podem potencialmente fazer com que o avatar ou a câmera penetram em objetos ou fiquem presos. É essencial que você teste completamente todas as superfícies passo a passo e teletransportáveis.

Camadas em detalhes

Camadas de objeto

Quando um GameObject tiver um colisor não disparador, ele colidirá com outros objetos se estiver em uma das camadas de objeto.

0 – Padrão
2 – Ignorar Raycast
4 - Água (somente colisores de gatilho permitidos)
14 – GroundCollision
18 – TriggerVolume (somente colisores de gatilho permitidos)
20 – ObjectCollision
26 - Personalizado26
27 - Personalizado27
28 - Personalizado28
29 - IgnoreRealtimeLight
30 - WallCollision
31 – IgnoreParticipant

A camada padrão no Unity é (não surpreendentemente) chamada "Padrão", portanto, talvez seja necessário usar uma camada diferente se você não quiser interagir com outros objetos. Por exemplo, IgnoreParticipant é usado para objetos que não devem interagir com o avatar e IgnoreCollisions é usado para objetos que não devem interagir com nada.

Algumas camadas importantes

Default

Se não for especificado de outra forma, um Colisor estará na camada Padrão . Esta é uma camada andável e o avatar será aterrado corretamente. Não é um destino de teletransporte válido para o usuário local. Essa camada interage e colide com outros objetos.

GroundCollision

Somente colisores na camada GroundCollision são destinos de teletransporte válidos para o usuário local. De outra forma, ele é idêntico à camada Padrão .

A geometria visual não apoiada com colisão não é andável e não bloqueia o avatar, portanto, é um destino de teletransporte inadequado e não deve estar na camada GroundCollision .

WallCollision

A camada WallCollision é usada para indicar paredes que o avatar não deve penetrar para restringir o avatar dentro de um espaço reproduzível. Os usuários de VR podem mover seus avatares de maneiras arbitrárias com o movimento HMD durante a locomoção em escala de sala e podem percorrer fisicamente uma parede virtual. O avatar será teletransportado de volta aos limites da área de jogo depois de percorrer uma distância definida. Essa camada é idêntica à camada Padrão .

Definições de camada

Veja a seguir uma lista de camadas definidas por ID e nome, incluindo semântica de bloqueio e descrição:

  1. Default

    [Avatar/Objeto/Bloqueio do Raycast]

    Usado para colisão e iluminação. Um avatar pode andar sobre ele, mas não teletransportá-lo. Padrão para a maioria dos adereços. Os objetos na camada Padrão recebem Luz Direcional em Tempo Real do ambiente.

  2. TransparentFX

    [Não está bloqueando]

    Tratamento especial no pipeline de renderização do Unity para objetos de efeitos transparentes e especiais; garante a ordem de renderização correta para transparência.

  3. IgnoreRaycast

    [Avatar/bloqueio de objeto]

    Camada habilitada para colisão que não bloqueia raycasts, como objetos não interacionáveis ou paredes invisíveis que os avatares não podem passar, mas objetos físicos podem passar (por exemplo, grades que objetos podem ser jogados sobre, mas avatares não podem pular).

  4. n/d

  5. Água

    [Não está bloqueando]

    Especificamente para superfícies de água. Pode ser usado para interações de renderização e física especializadas com água. Não use com colisores não disparados.

  6. n/d

  7. n/d

  8. n/d

  9. n/d

  10. n/d

  11. n/d

  12. n/d

  13. n/d

  14. n/d

  15. GroundCollision

    [Avatar/Objeto/Bloqueio do Raycast]

    Usado para superfícies de colisão andáveis que podem ser teletransportadas. Observação: em versões anteriores do Mesh Toolkit, essa era a camada "NavMesh".

  16. n/d

  17. n/d

  18. IgnoreCollisions

    [Não está bloqueando]

    Não interage com nada. Pode cortar o ambiente e outros objetos.

  19. TriggerVolume

    [Não está bloqueando]

    Camada para objetos que não devem ser afetados pela física ou raycasts e não têm nenhum uso especial de outra forma. Não use em objetos com colisores não disparados.

  20. n/d

  21. ObjectCollision

    [Bloqueio de objeto]

    Camada para colidir com objetos, mas não com avatar ou raycasts.

  22. IgnoreObjects

    [Bloqueio avatar/raycast]

    Camada para colidir com avatar, mas não objetos.

  23. RaycastOnly

    [Bloqueio do Raycast]

    Camada para objetos que bloqueiam raycasts ou podem ser selecionados, mas não afetam avatar ou colisão de objeto.

  24. n/d

  25. n/d

  26. n/d

  27. Custom26

    [Avatar/Objeto/Bloqueio do Raycast]

    Camada definida pelo usuário personalizada.

  28. Custom27

    [Avatar/Objeto/Bloqueio do Raycast]

    Camada definida pelo usuário personalizada.

  29. Custom28

    [Avatar/Objeto/Bloqueio do Raycast]

    Camada definida pelo usuário personalizada.

  30. IgnoreRealtimeLight

    [Avatar/Objeto/Bloqueio do Raycast]

    Especifique quais objetos de arte no ambiente NÃO recebem luz direcional em tempo real, como a maioria dos objetos estáticos (use iluminação assada em vez disso com o mapa de luz).

  31. WallCollision

    [Avatar/Objeto/Bloqueio do Raycast]

    Colisão que impede o recorte por meio de uma cena. Se um usuário do HMD enfiar a cabeça na parede, ele será reencaminhado para um local próximo na área reproduzível.

  32. IgnoreParticipant

    [Bloqueio de objeto/Raycast]

    Objetos que bloqueiam raycasts e outros objetos, mas não avatares.

Interações de camada e tabela

Interações de camada

Uma captura de tela da matriz de colisão de camada.

Tabela de camadas

Uma explicação dos quatro códigos de cor na tabela Camadas a seguir.

Uma tabela mostrando os atributos de todas as camadas disponíveis.