Props · 4 min de leitura

Prop do FiveM sem colisão? Por que os jogadores atravessam

Ler em: English · Español · Français · Deutsch · Italiano · Polski · Türkçe · Русский

Prop Collision Editor com o banco do jogo prop_bench_05: suas seis caixas de colisão desenhadas sobre o modelo, cada uma listada com a superfície

Você spawna seu prop personalizado e atravessa andando. Ou carros passam por ele, balas o atravessam, ou ele fica flutuando a uma mão do chão. Tudo isso se resume à colisão do prop: a forma invisível que o jogo usa para a física, separada do modelo que você vê.

Onde fica a colisão de um prop

Um prop que você spawna com CreateObject carrega sua colisão dentro do próprio modelo, o .ydr (ou .yft). É assim que os props do jogo fazem: dos 11.410 props do jogo cujo archetype nomeia um dicionário de física, 11.352 têm a colisão dentro do modelo. Um .ybn é outra coisa: é assim que mapas e MLOs carregam a colisão fixa deles, a de um mapa em coordenadas do mundo, a de um interior no lugar onde o interior é posicionado.

Então, quando um prop personalizado não tem colisão, costuma ser uma destas causas:

  • O modelo não tem. Foi exportado sem ela (comum em modelos convertidos de outros jogos ou feitos direto no Blender).
  • O .ytyp não a nomeia. O archetype tem um physicsDictionary; sem ele o jogo desenha o prop mas não usa a colisão dele.
  • Ela não bloqueia o que você espera. Cada parte da colisão diz com o que ela colide. Em 8.000 props do jogo que analisamos, 7.176 partes de colisão estão configuradas para parar só tiros e a câmera. Pelas flags delas, uma colisão feita só de partes assim deixa jogadores e carros passarem.
  • É o formato errado. Uma envoltória convexa não pode ter buracos: ela preenche o espaço embaixo de uma mesa ou dentro de um arco.

Por que um prop flutua ou afunda

O CreateObject coloca a origem do prop nas coordenadas que você informa. Se a origem estiver no meio do modelo, metade dele fica abaixo do chão; se a colisão descer abaixo do modelo, o prop se apoia nela e parece flutuar. Um prop sem nenhuma colisão cai através do chão se não estiver congelado.

Veja a colisão primeiro

Arraste o .ydr (ou .yft) com o .ytd para o Model Inspector e ative Collision: ela é desenhada sobre o modelo, colorida por superfície, ao lado do ped freemode. A seção do modelo diz qual colisão ele tem, ou "none inside" (nenhuma dentro), e onde fica a origem dele: embaixo, em cima ou alguns metros acima da base. É grátis e não altera nada.

Adicione ou corrija

Abra o prop no Prop Collision Editor: arraste o .ydr ou .yft, com o .ytd para ver as texturas e o .ytyp se você tiver. Ou escolha um prop do jogo pelo nome para começar a partir dele.

  1. Fit to the model (ajustar ao modelo) para um encaixe rápido, ou adicione partes à mão: + Box (caixa), + Sphere (esfera), + Capsule (cápsula), + Cylinder (cilindro). Mova, gire e dimensione cada uma sobre o modelo.
  2. Para uma parte só do modelo (o tampo de uma mesa, uma perna), use Pick triangles (escolher triângulos) e depois Fit to the picked triangles (ajustar aos triângulos escolhidos).
  3. Dê a cada parte uma Surface (o som dela, as marcas e a poeira ao ser atingida) e defina What hits it (o que a atinge): Everything (tudo) para um prop sólido, ou Shots and camera only (só tiros e câmera), Not vehicles (não veículos) e os outros se quiser menos.
  4. Baixe. Se você também arrastar o .ytyp, recebe um .zip com o modelo e o .ytyp, cuja caixa cresce para abrigar a colisão se ela sair para fora.

As partes que você não tocou voltam exatamente como estavam. Num .yft (um prop quebrável ou uma peça de veículo) você pode mover e redimensionar as peças que ele tem, mas não adicionar ou remover nenhuma, nem mudar o que elas atingem.

Está fazendo o prop você mesmo?

Se o prop vem de um .glb, defina a colisão na hora de criá-lo: o GLB to Prop tem Fitted (convex hull), Its own triangles para props e pisos por onde se anda, Box around it e None, e escreve o .ytyp com o dicionário de física. (A conversão completa.)

Perguntas

Posso simplesmente pôr um .ybn ao lado do meu prop?
Um .ybn é colisão fixa para um mapa ou interior, colocada onde o mapa está. Um prop que você spawna se move com a própria colisão, que fica dentro do .ydr ou .yft dele.
Meu prop tem colisão, mas os carros passam por ele. Por quê?
Quase sempre as partes dele estão configuradas para não colidir com veículos. No Prop Collision Editor, defina What hits it como Everything.
Por que não consigo passar embaixo da minha mesa?
Uma envoltória convexa é uma única forma fechada sem buracos. Use caixas separadas para o tampo e as pernas, ou Its own triangles no GLB to Prop.

A ferramenta para isso

Prop Collision Editor

Arraste seu prop e modele a colisão sobre ele: caixas, esferas, cápsulas e cilindros, cada um com a superfície e o que ele para.

Abrir Prop Collision Editor

Também útil aqui: Model Inspector · GLB to Prop

Todas as ferramentas são grátis para testar, com 5 exportações por dia. Entre com o Discord para usá-las.