Para ajudar na criação de experiências competitivas baseadas em combate, várias armas aprovadas estão disponíveis para uso em qualquer experiência. O sistema central conta com armas baseadas em projéteis com uma câmera sobre o ombro, e definir a velocidade do projétil alta o suficiente pode simular armas de raycasting, como pistolas laser.

Para usar uma arma aprovada em sua experiência:
- Selecione uma arma abaixo, navegando até o link da biblioteca de ativos.
Na página do item da arma, clique no botão verde Obter e confirme a transação.
No Studio, abra a Caixa de Ferramentas.
Selecione a seção Inventário da sua caixa de ferramentas.
Localize a arma e clique nela para adicioná-la ao local. Ao ser solicitado se deseja colocar a ferramenta no pacote inicial, clique em Sim se quiser que os jogadores comecem com a arma na mochila, ou clique em Não para simplesmente colocar a arma no mundo 3D como um item de coleta.
Se esta for a primeira vez que está trazendo uma arma aprovada, mova a pasta WeaponsSystem para o ServerScriptService para servir como a pasta do sistema unificada para todas as armas aprovadas na experiência.

Estrutura da pasta do sistema
A pasta WeaponsSystem é uma pasta unificada que contém ativos, configurações e scripts que alimentam todas as armas aprovadas na experiência. Se localizada no ServerScriptService, ela substitui quaisquer pastas equivalentes WeaponsSystem que possam residir dentro de armas individuais.

A pasta WeaponsSystem contém as seguintes instâncias:
- TiposdeArmas (Folder) – Especifica todos os tipos de armas.
- ServerWeaponsScript (Script)
- Versão (IntValue)
- ClientWeaponScript (LocalScript)
- NetworkingCallbacks (ModuleScript)
- WeaponData (RemoteEvent)
- WeaponsSystem (ModuleScript)
Dentro da pasta WeaponsSystem, diferentes aspectos são controlados pelos seguintes ModuleScripts:
| Aspecto | Manipulado principalmente dentro de... |
|---|---|
| Funcionalidade das Armas |
|
| Câmera do Ombro |
|
| GUI das Armas |
|
Estrutura da arma
Armas aprovadas são Tools e são nomeadas como aparecerão na mochila do jogador. Cada arma é estruturada com uma hierarquia semelhante.
Tipo de Arma
O WeaponType StringValue corresponde com o ModuleScript para a arma na pasta WeaponsSystem/WeaponTypes. Os dois valores base são BulletWeapon e BowWeapon.
Modelo da Arma
Cada arma contém um Model composto por uma ou mais BaseParts para formar a arma física. Um desses deve ser definido como a PrimaryPart do modelo.

O modelo também inclui os seguintes descendentes importantes que podem ser parentados a uma das BaseParts do modelo:
- Descendentes adicionais para quaisquer opções especializadas.
Cabo da Arma
A parte Handle determina onde um personagem jogador segura a arma. Este deve ser um Part, deve ser nomeado Handle, e deve ser um filho direto da arma (ferramenta).
Pasta de Configuração
A pasta Configuration contém tipos de "valor" específicos para o comportamento da arma. Além dos valores padrão, você pode adicionar itens de configuração adicionais para opções especializadas quando aplicável.
A seguir estão as configurações básicas e seus valores padrão:
| Item | Descrição | Padrão |
|---|---|---|
| AmmoCapacity | Número de disparos em cada "cartucho de munição" antes que o jogador precise recarregar. Observe que a munição é ilimitada e isso não especifica quanto de munição um jogador está carregando. | 30 |
| FireMode | Escolha entre Semiautomática (um disparo por clique/toque), Automática (fogo contínuo), ou Rajada (rajada de disparos igual a NumBurstShots a cada clique/toque). | Semiautomática |
| ShotCooldown | Tempo mínimo de espera entre cliques. Para armas com FireMode de Automática, este é também o tempo entre os disparos enquanto pressionar o botão de disparo ou segurar o clique. | 0.1 |
| BurstShotCooldown | Tempo entre cada disparo em uma rajada; só importa se você definir FireMode para Rajada. | Valor de ShotCooldown |
| NumBurstShots | Número de disparos por clique/rajada; só importa se você definir FireMode para Rajada. | 3 |
| HitDamage | Quantidade de dano que cada acerto direto causa. | 10 |
| FullDamageDistance | Distância máxima que os disparos causarão dano total. Qualquer coisa atingida além dessa distância receberá menos e menos dano à medida que a distância se aproxima de ZeroDamageDistance. | 1000 |
| ZeroDamageDistance | Qualquer coisa atingida nesta distância ou além dela não receberá dano. | 10000 |
| BulletSpeed | Velocidade que balas/projetéis viajam quando disparados. Definir isso para um valor muito alto como 20000 simula armas de raycasting como armas laser. | 1000 |
| MaxDistance | Distância máxima que balas/projetéis viajam antes de desaparecer. | 2000 |
| MinSpread | Quantidade mínima de dispersão para a arma. | 0 |
| MaxSpread | Quantidade máxima de dispersão para a arma. | Valor de MinSpread |
| GravityFactor | Quantidade que a gravidade deve influenciar cada bala/projetil. Por exemplo, este valor para o Bestica é 1 porque as flechas arqueiam durante o voo, mas este valor para o Lança-R foguetes é 0 porque os foguetes propulsados viajam reto. | 0 |
| HasScope | Defina como true se você quiser usar o escopo especificado na GUI do Sistema de Armas. | false |
| ReloadAnimation | Nome da animação de recarga na Assets/Animations da pasta do sistema. | RifleReload |
| AimTrack | Nome da animação de mira na Assets/Animations da pasta do sistema. | RifleAim |
| AimZoomTrack | Nome da animação de zoom na mira na Assets/Animations da pasta do sistema. | RifleAimDownSights |
| RecoilMin | Recuo mínimo adicionado para cada disparo. | 0.05 |
| RecoilMax | Recuo máximo adicionado para cada disparo. | 0.5 |
| TotalRecoilMax | Recuo total máximo acumulado. O recuo atual da arma nunca excederá este valor. | 2 |
| RecoilDecay | Multiplicador de decaimento para recuo; essencialmente a taxa na qual o recuo diminui após o disparo. | 0.825 |
| RecoilDelayTime | Tempo de espera após disparo/clique antes que o recuo seja adicionado à câmera. | 0.07 |
| StartupTime | Duração do tempo após equipar a arma antes que o jogador possa disparar. Isso previne que os jogadores disparem um único tiro de várias armas diferentes em rápida sucessão. | 0.2 |
| FiredPlaybackSpeedRange | Quantidade que o tom pode variar para o som Fired da arma. Defina isso como 0 para sempre tocar no mesmo tom. | 0.1 |
| NumProjectiles | Número de balas/projetéis que serão disparados ao mesmo tempo quando você clicar/tocar uma vez. Isso é útil para armas como a Espingarda que dispara várias balas ao mesmo tempo. Observe que um disparo sempre usará exatamente uma munição, independentemente deste valor. | 1 |
Opções especializadas
Você pode adicionar/modificar as seguintes opções para qualquer arma. Essas personalizações requerem modificar o Model da arma, a Configuration da arma, ou ambos. Algumas configurações dependem de outras, como Partículas de Bocal que requerem os filhos necessários para Efeitos e Sons de Projetil/Acerto.
Animações e sons do bolt
O bolt de uma arma é a parte que se move para frente e para trás cada vez que é disparada.
- Descendentes do Modelo da Arma
| Bolt | BasePart que se move quando a arma é disparada. | |
| BoltMotor | Motor6D usado para animar o bolt. Certifique-se de definir Part0 do motor para a PrimaryPart do modelo da arma e Part1 para a parte Bolt. | |
| BoltMotorStart | Attachment cuja posição na BasePart pai determina onde o bolt está quando está em repouso. | |
| BoltMotorTarget | Attachment cuja posição na BasePart pai determina onde o bolt anima ao disparar. | |
| BoltOpenSound | Sound que toca quando o bolt se abre. | optional |
| BoltCloseSound | Sound que toca quando o bolt se fecha. | optional |
- Filhos da pasta Configuração da arma
| Item | Descrição | Padrão |
|---|---|---|
| ActionOpenTime | Tempo que leva para o bolt animar na posição aberta. | 0.025 |
| ActionCloseTime | Tempo que leva para o bolt animar na posição fechada. | 0.075 |
Ejeção de cartuchos
As armas podem incluir cartuchos de bala físicos que ejetam ao disparar e caem no chão.
- Descendentes do Modelo da Arma
| CasingEjectPoint | Attachment cuja posição na BasePart pai determina onde você deseja que os cartuchos de bala saiam. Observe que sua orientação determina a direção em que os cartuchos saem. |
- Filhos da pasta Configuração da arma
| Item | Descrição | Padrão |
|---|---|---|
| CasingEffect | Nome do BasePart de cartucho em Assets/Effects/Casings da pasta do sistema. | |
| CasingEjectSpeedMin | Velocidade mínima de ejeção dos cartuchos | 15 |
| CasingEjectSpeedMax | Velocidade máxima de ejeção dos cartuchos | 18 |
| CasingHitSound | Sound que toca quando os cartuchos atingem o chão. | optional |
Efeitos e sons de projétil/acerto
Você pode configurar projetéis físicos para qualquer arma, junto com Sons, Feixes, e Emissores de Partículas para efeitos de acerto e outros efeitos especiais.
- Filhos da pasta Configuração da arma
| Item | Descrição | Padrão |
|---|---|---|
| ShotEffect | Nome de um efeito de disparo armazenado em Assets/Effects/Shots da pasta do sistema. | |
| ShouldMovePart | Defina como true se o ShotEffect da arma deve se mover com o projétil ou false se não. Você deve apenas definir isso como true se há um objeto visível que se move a cada disparo, como uma flecha ou foguete. | false |
| BeamFadeTime | Tempo que leva para Beam0 ou Beam1 (veja abaixo) desaparecer após o projétil atingir algo. Por padrão, nenhum desvanecimento manual será aplicado pelo código. | 0 |
| BeamWidth0 | Espessura de Beam0 ou Beam1 em Attachment0 (veja abaixo). | 1.5 |
| BeamWidth1 | Espessura de Beam0 ou Beam1 em Attachment1 (veja abaixo). | 1.8 |
| NumHitParticles | Número de partículas que o emissor HitParticles (veja abaixo) emitirá. | 3 |
| HitParticlesUsePartColor | Defina como true se você quiser que as partículas de acerto sejam da cor da superfície atingida; false se você quiser que as partículas de acerto não mudem de cor. | true |
Descendentes de ShotEffect
Descendentes do ShotEffect especificado na seção anterior
| Flying | Sound que toca enquanto o projétil está viajando. | optional |
| Beam0 | Primeiro slot para um Beam rastreando atrás do projétil. Não se esqueça de definir Attachment0 e Attachment1. | optional |
| Beam1 | Segundo slot para um Beam rastreando atrás do projétil. Não se esqueça de definir Attachment0 e Attachment1. | optional |
| Attachment0 | Attachment cuja posição na BasePart pai determina a parte traseira dos feixes rastreadores; certifique-se de definir Beam.Attachment0 em ambos os Beam0 e Beam1 para isso. | optional |
| Attachment1 | Attachment cuja posição na BasePart pai determina a parte dianteira dos feixes rastreadores; certifique-se de definir Beam.Attachment1 em ambos os Beam0 e Beam1 para isso. | optional |
| TrailParticles | ParticleEmitter parentado como um filho direto de Attachment0; isso irá emitir enquanto o projétil está viajando. | optional |
| LeadingParticles | ParticleEmitter parentado como um filho direto de Attachment1; isso irá emitir enquanto o projétil está viajando. | optional |
| HitEffect | Attachment cuja posição será definida como Beam.Attachment1 de Beam0 quando o projétil atingir. Você deve especificar Beam0 e seus anexos para que isso funcione corretamente. | optional |
| HitSound | Sound parentado como um filho direto de HitEffect; toca quando o projétil atinge. | optional |
| HitParticles | Sound parentado como um filho direto de HitEffect; emite quando o projétil atinge. | optional |
| [ProjectilePart] | Qualquer Part ou MeshPart que você deseja aparecer como um projétil físico. Certifique-se de definir ShouldMovePart conforme indicado na seção anterior para true se você tiver um objeto visível aqui. | optional |
Partículas de bocal
Esta opção emite partículas do especificado ParticleEmitter no TipAttachment da arma quando é disparada.
Descendentes da configuração:

- ShotEffect (StringValue) — Nome de um efeito de disparo armazenado em WeaponsSystem/Assets/Effects/Shots.
- NumMuzzleParticles (IntValue) (opcional) — Número de partículas de bocal que serão emitidas; o padrão é 50.
Para o efeito de disparo especificado, adicione um ativo ParticleEmitter dentro de WeaponsSystem/Assets/Effects/Shots nomeado MuzzleParticles.

Flashes de bocal
Esta opção cria um efeito de flash Beam quando a arma é disparada.
Descendentes do modelo:

- MuzzleFlash0 (Attachment) — Usado para especificar um lado do flash de bocal. A posição não importa.
- MuzzleFlash1 (Attachment) — Usado para especificar o lado oposto do flash de bocal. A posição não importa.
- MuzzleFlash (Beam) — Certifique-se de definir Attachment0 para MuzzleFlash0 e Attachment1 para MuzzleFlash1.
Descendentes da configuração:

- MuzzleFlashTime (NumberValue) (opcional) — Duração que o flash de bocal será exibido; o padrão é 0.03.
- MuzzleFlashRotation0 (NumberValue) (opcional) — Rotação mínima do flash de bocal; o padrão é -math.pi.
- MuzzleFlashRotation1 (NumberValue) (opcional) — Rotação máxima do flash de bocal; o padrão é math.pi.
Trilhas de partículas
Esta opção cria uma trilha de comprimento variável da arma até o ponto de impacto do projétil.
Descendentes da configuração:

- TrailLength (NumberValue) (opcional) — Comprimento da trilha atrás do projétil; o padrão é nil, o que significa que o comprimento da trilha será calculado usando TrailLengthFactor.
- TrailLengthFactor (NumberValue) (opcional) — O comprimento da trilha será definido para este valor multiplicado pela distância que o projétil viajou no último quadro; o padrão é 1. Observe que isso será substituído se você incluir TrailLength.
- ShowEntireTrailUntilHit (BoolValue) (opcional) — Defina como true para renderizar a trilha da ponta da arma até onde quer que o projétil esteja; isso substituirá tanto TrailLength quanto TrailLengthFactor e a trilha só desaparecerá uma vez que o projétil atinja algo. Defina como false para usar uma das duas opções acima para calcular o comprimento da trilha. O padrão é false.
Marcas de acerto
Esta adição visual aparece na superfície onde os projéteis atingem e é útil para flechas, buracos de bala, marcas de queimado, etc.
Descendentes da configuração:

- HitMarkEffect (StringValue) (opcional) — Nome do efeito de marca de acerto armazenado em WeaponsSystem/Assets/Effects/HitMarks; o padrão é BuracoDeBala.
- AlignHitMarkToNormal (BoolValue) (opcional) — Defina como true se a marca de acerto deve sempre se alinhar plana contra a superfície como um buraco de bala, ou false se a marca de acerto deve aparecer presa na superfície da direção de onde o projétil veio (como uma flecha). O padrão é true.
Você pode adicionar o seguinte ativo opcional dentro de WeaponsSystem/Assets/Effects/HitMarks:

- Glow (Decal) (opcional) — Aparece na superfície atingida totalmente opaca, depois rapidamente fica mais transparente, como um efeito de brilho na superfície que desaparece rapidamente. Útil para coisas como mostrar uma marca vermelha brilhante onde explosivos atingem.
- BuracoDeBala (Decal) (opcional) — Aparece na superfície atingida totalmente opaca e, após 4 segundos, desaparece para transparente por 1 segundo.
- ImpactBillboard (BillboardGui) (opcional) — Exibe na superfície atingida, sempre de frente para a câmera.
- Impact (ImageLabel) (opcional) — Filho direto de ImpactBillboard; começa totalmente opaco, cresce para o tamanho total do ImpactBillboard em 0.1 segundos, depois encolhe para metade do seu tamanho e desaparece para totalmente transparente em 0.1 segundos.
- Qualquer Part/MeshPart/SpecialMesh que você deseja aparecer como um projétil físico (opcional). Por exemplo, incluir uma MeshPart de flecha e definir AlignHitMarkToNormal indicado acima para false fará com que a flecha saia da superfície na direção de onde você a disparou.
Projetéis explosivos
Os projéteis podem incluir um objeto de Explosão para causar dano a personagens jogadores em uma área ao redor do ponto de impacto.
Descendentes da configuração:

- ExplodeOnImpact (BoolValue) (opcional) — Defina como true se você quiser que balas/projetéis da arma explodam ao impactar, false caso contrário. O padrão é false.
- BlastDamage (NumberValue) (opcional) — Dano causado às coisas no centro da explosão. Observe que a explosão causa menos dano quanto mais longe os objetos atingidos estão do centro da explosão. O padrão é 100.
Arma de carga
Uma arma de carga, como o Railgun, precisa ser carregada entre disparos antes que possa ser disparada novamente.
Descendentes do modelo:

- Charging (Sound) (opcional) — Toca enquanto a arma está sendo carregada.
- Discharging (Sound) (opcional) — Toca enquanto a arma está descarregando, por exemplo, se você carrega a arma apenas parcialmente e solta o botão de disparo.
- ChargeComplete (Sound) (opcional) — Toca quando a arma alcançou carga total.
- DischargeComplete (Sound) (opcional) — Toca quando a arma foi totalmente descarregada.
- ChargeGlow (BasePart) (opcional) — Este objeto ficará menos transparente à medida que a arma carga, de modo que ficará totalmente opaco a 100% de carga.
- ChargeCompleteParticles (ParticleEmitter) (opcional) — Emite quando a arma termina de carregar. Este emissor pode ser um filho de qualquer BasePart do modelo ou um filho de um Attachment dentro do BasePart.
- DischargeCompleteParticles (ParticleEmitter) (opcional) — Emite quando a arma foi completamente descarregada. Este emissor pode ser um filho de qualquer BasePart do modelo ou um filho de um Attachment dentro do BasePart.
- ChargingParticles (ParticleEmitter) (opcional) — Emite enquanto a arma está sendo carregada. Você pode incluir vários emissores desse nome e cada um emitirá enquanto estiver carregando. Este emissor pode ser um filho de qualquer BasePart do modelo ou um filho de um Attachment dentro do BasePart.
Descendentes da configuração:

- ChargeRate (NumberValue) — Taxa na qual a arma carregará. Este valor deve ser especificado para indicar que a arma usa carregamento.
- DischargeRate (NumberValue) (opcional) — Taxa na qual a arma descarregará; o padrão é 0, o que significa que a arma não descarregará.
- ChargePassively (BoolValue) (opcional) — Defina como true se quiser que a arma carregue passivamente para que dispare instantaneamente quando você clicar, ou false se quiser clicar/tocar para carregar a arma e disparar assim que a carga total for alcançada. O padrão é false.
- ChargingParticlesRatePerCharge (IntValue) (opcional) — Número de partículas que serão emitidas de todos os emissores de ChargingParticles multiplicado pela carga atual da arma. O padrão é 20, o que significa que se a carga da arma estiver a 10%, cada emissor de ChargingParticles emitirá 2 partículas (20×0.1), e se a carga da arma estiver a 90%, cada emissor emitirá 18 partículas (20×0.9).
- FireDischarge (NumberValue) (opcional) — Quantidade de carga que a arma perderá após disparar um disparo totalmente carregado; o padrão é 1.
- NumChargeCompleteParticles (IntValue) (opcional) — Número de partículas que o emissor ChargeCompleteParticles emitirá uma vez que a arma estiver totalmente carregada. O padrão é 25.
- NumDischargeCompleteParticles (IntValue) (opcional) — Número de partículas que o emissor DischargeCompleteParticles emitirá quando a arma estiver totalmente descarregada. O padrão é 25.
Arma de arco
Uma arma de arco, como a Bestica, pode incluir uma construção de corda e braços realista, bem como uma flecha visual nockada na corda.
Além de adicionar descendentes ao modelo, você precisa aplicar o seguinte:
- Transforme a arma em uma arma de carga. Por exemplo, adicione a ChargeRate necessária dentro da Configuration da arma que especifica a velocidade com que a corda é puxada. Além disso, considere adicionar descendentes opcionais ao Model da arma, como um som de Charging para a corda/braços sendo puxados para trás.
Descendentes do modelo:

- LeftString (Beam) (opcional) — A metade visual esquerda da corda.
- RightString (Beam) (opcional) — A metade visual direita da corda.
- Arrow (BasePart) (opcional) — A flecha que aparece quando o arco está totalmente puxado. Observe que isso é apenas para aparência visual no arco (a flecha realmente disparada será um ShotEffect conforme descrito em Efeitos e Sons de Projetil/Acerto).
- String1 (Attachment) (opcional) — O ponto central da corda.
- StringTight (Attachment) (opcional) — Ponto onde String1 deve estar quando o arco está totalmente puxado.
- Arms (Part) (opcional) — Uma parte que serve apenas como um indicador interno de que os braços do arco serão animados. Isso pode conter os seguintes filhos diretos:
- LeftString0 (Attachment) (opcional) — Ponto onde o lado esquerdo da corda está preso ao arco.
- RightString0 (Attachment) (opcional) — Ponto onde o lado direito da corda está preso ao arco.
- LeftLoose (Attachment) (opcional) — Ponto onde LeftString0 deve estar quando o arco está em repouso.
- RightLoose (Attachment) (opcional) — Ponto onde RightString0 deve estar quando o arco está em repouso.
- LeftTight (Attachment) (opcional) — Ponto onde LeftString0 deve estar quando o arco está totalmente puxado.
- RightTight (Attachment) (opcional) — Ponto onde RightString0 deve estar quando o arco está totalmente puxado.
- [SpecialMesh] (SpecialMesh) (opcional) — A parte do arco que realmente se dobra quando o arco é puxado. Observe que você deve especificar os seguintes quatro objetos Vector3Value para que isso anime.
- TightOffset (Vector3Value) (opcional) — Deslocamento do SpecialMesh quando o arco está totalmente puxado.
GUI do sistema de armas
O sistema central das armas interage com este sistema para atualizar a GUI com base em elementos como a dispersão da arma, indicadores para quando você é atingido ou acerta outros, etc.
A WeaponsSystemGui é um objeto ScreenGui em WeaponsSystem/Assets que é parentado ao PlayerGui quando a experiência começa. O WeaponSystemGui possui 4 descendentes:
- ScalingElements - Uma Folder de elementos na tela.
- LargeTouchscreen - Uma Frame para botões em grandes telas sensíveis ao toque.
- SmallTouchscreen - Uma Frame para botões em telas sensíveis ao toque pequenas.
Elementos de Escala
ScalingElements é uma Folder parentada sob WeaponsSystemGui com os seguintes descendentes:
| Nome | Tipo de instância | Descrição |
|---|---|---|
| DirectionalIndicators | Folder | Uma Folder onde todos os indicadores direcionais são armazenados. |
| Crosshair | Frame | Uma Frame contendo os seguintes objetos: [UIAspectRationConstraint] - UIAspectRatioConstraint Bottom - ImageLabel Left - ImageLabel Right - ImageLabel Top - ImageLabel |
| HitMarker | Frame | Uma Frame contendo os seguintes objetos: [UIAspectRatioConstraint] - UIAspectRatioConstraint HitMarkerImage - ImageLabel que aparece e desaparece quando o jogador acerta outro personagem jogador. |
LargeTouchscreen
LargeTouchscreen é uma Frame contendo botões que são exibidos em grandes telas sensíveis ao toque. LargeTouchscreen tem os seguintes descendentes:
- AimButton (ImageButton)
- FireButton (ImageButton)
Scope
Scope é uma Frame que contém ScopeImage (ImageLabel) que aparece ao ampliar uma arma com HasScope habilitado (veja Estrutura da Arma).
Scope tem os seguintes descendentes:
| Nome | Tipo de instância | Descrição |
|---|---|---|
| ScopeInstance | Frame | Uma Frame contendo os seguintes ativos usados ao ampliar uma arma com HasScope habilitado: [UIAspectRationConstraint] - UIAspectRatioConstraint BottomBlack - Frame LeftBlack - Frame RightBlack - Frame TopBlack - Frame |
SmallTouchscreen
SmallTouchScreen é uma Frame contendo botões que são exibidos em pequenas telas sensíveis ao toque. SmallTouchscreen tem os seguintes descendentes:
- AimButton (ImageButton)
- FireButton (ImageButton)
Criar um indicador direcional
Indicadores direcionais são usados para mostrar a direção de algo ao redor da mira do jogador. Por exemplo, se alguém te atirar, um semi-círculo vermelho pode aparecer ao redor da sua mira na direção de onde o tiro veio. Outros exemplos incluem indicadores para mostrar a direção de passos, tiros indiretos, ou até mesmo objetos ambientais como baús.
Para criar um novo indicador, adicione um novo Frame de Indicador em WeaponsSystemGui/ScalingElements/DirectionalIndicators com a seguinte estrutura:
| Nome | Tipo de instância | Descrição |
|---|---|---|
| [UIAspectRationConstraint] | UIAspectRatioConstraint | |
| [ImageLabel] | ImageLabel | Imagem do indicador direcional. Ajustes na rotação da imagem no Studio podem ser necessários, a menos que você faça o upload da imagem de modo que ela esteja voltada para baixo e haja pouco ou nenhum espaço em branco ao redor. Esta imagem label também deve conter sua própria UIAspectRatioConstraint. |
| [Configuração] | Configuration | Contém propriedades opcionais para ajustar. Consulte Configuração do Indicador para mais informações. |
Uma vez criado, você pode ativar um indicador via o seguinte comando dentro de WeaponsSystem/Libraries/WeaponsGui onde indicatorName é o nome da string do indicador a ser ativado e worldPos é a posição mundial onde o indicador direcional deve apontar:
self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)
Configuração do indicador
Os DirectionalIndicators podem ser ainda mais modificados ajustando o objeto Configuration parentado sob o [Indicator]. Todas essas configurações têm um valor padrão, portanto, não há necessidade de configurar itens quando não estiver modificando uma configuração.
As seguintes configurações podem ser definidas:
| Nome | Tipo de instância | Descrição |
|---|---|---|
| DistanceLevelFromCenter | NumberValue | Número de níveis de distância a partir do centro da tela (cada nível de distância é cerca de 0.03 da escala da tela); o padrão é 6. |
| FadeTime | NumberValue | Tempo de desvanecimento do indicador após sua ativação e o tempo TimeBeforeFade; o padrão é 1. |
| Nome | StringValue | Nome do indicador direcional como você deseja referenciá-lo no código; o padrão é o nome do Frame de nível superior do indicador. |
| TimeBeforeFade | NumberValue | Número de segundos que o indicador aparecerá antes de desaparecer; o padrão é 1. |
| TransparencyBeforeFade | NumberValue | Transparência do indicador antes de começar a desaparecer; o padrão é 0. |
| WidthLevel | NumberValue | Número de níveis de largura a partir do centro (cada nível de largura é cerca de 0.03 da escala da tela); o padrão é o valor de DistanceLevelFromCenter. |
Mostrar painel de dano
O painel de dano é usado para mostrar números pequenos acima da cabeça de um personagem quando são danificados. Esses aparecerão apenas para o jogador que causou dano a outro personagem jogador, não para jogadores espectadores.
Os painéis de dano são gerenciados em WeaponsSystem/Libraries/DamageBillboardHandler e podem ser ativados de qualquer código do lado do cliente da seguinte forma, onde damage é a quantidade de dano feito e adornmentPart é a parte na qual adornar o painel, como a cabeça da vítima:
DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)
Câmera sobre o ombro
A câmera sobre o ombro é uma câmera em terceira pessoa que olha sobre o ombro direito do personagem jogador. Para personalizar a câmera sobre o ombro, modifique as variáveis sob o comentário -- Parâmetros de configuração (constantes) na função ShoulderCamera.new() de WeaponsSystem/Libraries/ShoulderCamera. Você pode modificar coisas como campo de visão, deslocamento em relação ao personagem, velocidade de caminhada enquanto correndo ou ampliando, etc.
Controle de corrida e zoom
Por padrão, o sistema de armas adiciona a capacidade de "correr", para que os jogadores possam correr segurando a tecla Shift, pressionando totalmente para cima no thumbstick dinâmico (móvel), ou pressionando totalmente para cima no joystick esquerdo (gamepad). Se você deseja desabilitar a corrida, defina o valor de SprintEnabled dentro de WeaponsSystem/Configuration para false.
O sistema também reduz a velocidade do jogador enquanto eles estão mirando/ampliando, mas você pode desabilitar esse comportamento definindo o valor de SlowZoomWalkEnabled para false.









