Sistema de construção

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

O Roblox Battle Royale possui um sistema de construção que permite que os usuários construam suas próprias estruturas para alcançar um terreno mais alto para um melhor ângulo de tiro ou para fornecer cobertura durante a batalha.Usando um menu, o usuário pode selecionar de uma série de diferentes tipos de azulejos e colocá-los no mundo.

Building Example

Para manter um sistema ordenado e estruturado:

  • Cada ladrilho deve se conectar a outro ladrilho existente ou ao chão.
  • Coloque todos os ladrilhos de construção dentro de uma grade coordenada com o mundo do jogo para que os ladrilhos se conectem corretamente e não se sobreponham.

Composição de azulejo

Para que os usuários construam novos azulejos rapidamente e facilmente, o sistema de construção precisa entender quais azulejos estão conectados uns aos outros e onde novos azulejos podem ser colocados na grade.

Azulejos usam 3 componentes: o recurso visual que é usado como Objetode azulejo, informações sobre o espaço que o azulejo ocupa em referência a outros objetos do mundo, e os pontos de conexão de um azulejo que permitem que azulejos adicionais se conectem a cantos disponíveis.

Recurso

Um recurso é um BasePart ( Part , MeshPart , etc.) colocado em ReplicatedStorage/BuildingSystem/Assets representando o que a telha parece no mundo do jogo.Este BasePart deve ter dois filhos:

  • Tipo de objeto — Um StringValue com um Value do nome do tipo de azulejo.
  • Início de Rotação — Um NumberValue com uma Value da rotação inicial da tijoloquando um usuário a coloca no mundo.

Ocupação

Garantir que um mosaico ocupe a localização correta em um sistema de grade é importante e pode ser feito usando uma máscara de bits.Uma máscara de bits representa o espaço físico que o tipo de ladrilho ocupa dentro de uma seção básica do espaço mundial, ou célula.Cada mosaico/objeto de sistema de construção pode ocupar qualquer número de faces de uma célula de grade (frente, esquerda, voltar, direita, superior e inferior) e qualquer número de octantes em uma célula de grade.Um usuário só pode colocar um objeto do sistema de construção em uma célula se todas as faces e octantes que o objeto ocupa estiverem disponíveis naquela célula.A ocupação para um objeto do sistema de construção é definida da seguinte forma:

Índice de bitsSignificado
0Rosto inferior da célula
1Parte superior da célula
2Rosto direito da célula
3Frente da célula de volta
4Rosto esquerdo da célula
5Frente da célula
6 +X, –Y, +Z octante de célula com origem no centro da célula
7 +X, +Y, +Z octante de célula com origem no centro da célula
8 –X, –Y, +Z octante de célula com origem no centro da célula
9 –X, +Y, +Z octante de célula com origem no centro da célula
10 –X, –Y, –Z octante de célula com origem no centro da célula
11 –X, +Y, –Z octante de célula com origem no centro da célula
12 +X, –Y, –Z octante de célula com origem no centro da célula
13 +X, +Y, –Z octante de célula com origem no centro da célula

Conectividade

Azulejos precisam se conectar uns aos outros para criar uma estrutura.Você pode usar uma máscara de bits que representa quais partes das faces/bordas da célula o tipo de ladrilho toca.A conectividade de um módulo/objeto do sistema de construção é representada por uma série de pontos de conexão, bits, na superfície de uma célula.Eles se organizam da seguinte forma nas faces da célula:

Octant Cube Diagram

Um objeto do sistema de construção é considerado conectado a outro objeto do sistema de construção na grade se compartilhar pelo menos 2 pontos de conectividade na superfície de uma célula.

Criar novos tipos de azulejo

Para criar um novo digitarde azulejo:

  1. Coloque o recurso em ReplicatedStorage/BuildingSystem/Assets . Lembre-se de que deve conter ObjectType e StartingRotation filhos definidos acima.

    Battle Royale Weapon Example
  2. Defina o Ocupação e Conectividade para o seu novo tipo de azulejo em >:

    Battle Royale Weapon Example

Por exemplo, o tipo de azulejo Parede é expresso da seguinte forma:


ObjectTypeConfigurations.Wall = {
ASSET_OFFSET_FROM_CENTER = Vector3.new(0, 0, -CELL_DIMENSIONS.Z / 2),
CONNECTIVITY = 0xFF8000, -- 0b 111 111 111 000 000 000 000 000
OCCUPANCY = 0x20, -- 0b 00 00 00 00 1 0 0 0 0 0
}

Trabalhar com terreno

Se você quiser criar um mapa com terreno de forma livre que se alinha perfeitamente com o sistema de construção, recomendamos que você use o sistema de importação de mapa de altura como descrito em Terreno Ambiental e que você observe os seguintes detalhes:

  • O terreno no Roblox é representado por um array de três dimensões de voxels, cada um dos quais ocupa um cubo de 4×4×4 studs no mundo.Devido a isso, o Roblox Battle Royale usa um tamanho de célula de grade de 20×16×20 studs, com ladrilhos de parede que são 20×16×1 studs e ladrilhos de piso/teto que são 20×1×20 studs em tamanho.Isso permite que ladrilhos e terrenos se alinhem corretamente.

  • Cada pixel na imagem do mapa de altura deve representar um voxel de terreno no plano X/Z , então uma área de 5×5 em pixels representa uma célula de grade de sistema de construção que ocupa uma área de 20×20 em studs.

  • Na imagem do mapa de altura, certifique-se de que o canal vermelho ou o valor do canal cinza para cada pixel é divisível pela altura da célula de grade do sistema de construção para que os ladrilhos de piso fiquem bem sobre o terreno.

  • Quando você importa seu mapa de altura, configurar:


    Position (X, Y, Z) = 0, 0, 0
    Size (X, Y, Z) = heightmap_width × 4, 256, heightmap_length × 4