Pular para o conteúdo

Partículas

Visão Geral

O sistema de partículas do Hytale usa dois tipos de arquivo que trabalham juntos: sistemas de partículas (.particlesystem) compõem uma ou mais referências de emissores em um efeito completo, e emissores de partículas (.particlespawner) definem o comportamento individual do emissor — taxa de emissão, velocidade, tempo de vida, textura, animação de cor, atratores e colisão. Arquivos JSON de sistema de partículas também podem usar a extensão .json para efeitos complexos com múltiplos emissores. O motor carrega estes em tempo de execução para produzir efeitos visuais para interações de bloco, acertos de combate, clima, habilidades de NPC e objetos implantáveis.

Localização dos Arquivos

Assets/Server/Particles/
Block/
Block_Top_Glow.particlesystem
Block_Top_Glow_Alpha.particlespawner
Clay/
Block_Break_Clay.particlesystem
Block_Hit_Clay.particlesystem
Crystal/
Stone/
Wood/
Combat/
Deployables/
Healing_Totem/
Totem_Heal_Simple_Test.json
Slowness_Totem/
Drop/
Dust_Sparkles_Fine.particlesystem
Dust_Sparkles_Fine.particlespawner
Explosion/
Item/
Memories/
NPC/
Projectile/
Spell/
Status_Effect/
Weapon/
Weather/
_Example/

Esquema

Sistema de Partículas (.particlesystem / .json)

CampoTipoObrigatórioPadrãoDescrição
SpawnersSpawnerRef[]SimArray de referências de emissores que compõem este efeito de partículas.
LifeSpannumberNãoDuração total em segundos antes que o sistema inteiro seja destruído. Omita para efeitos de duração infinita.
CullDistancenumberNãoDistância em blocos além da qual o sistema de partículas não é renderizado.
BoundingRadiusnumberNãoRaio usado para culling por frustum.
IsImportantbooleanNãofalseQuando true, o sistema nunca é descartado pelo orçamento de partículas.

SpawnerRef

CampoTipoObrigatórioPadrãoDescrição
SpawnerIdstringSimID do emissor de partículas a ser usado. Resolve para um arquivo .particlespawner pelo nome.
PositionOffsetVector3Não{0,0,0}Deslocamento de posição a partir da origem do sistema. Apenas os eixos especificados são sobrescritos.
FixedRotationbooleanNãotrueQuando false, as partículas rotacionam com a entidade emissora.
StartDelaynumberNão0Segundos a esperar antes que este emissor comece a emitir.
WaveDelayMinMaxNãoIntervalo de atraso aleatório entre ondas de emissão.

Emissor de Partículas (.particlespawner)

CampoTipoObrigatórioPadrãoDescrição
RenderModestringNãoModo de renderização: "Erosion", "Additive", "AlphaBlend", etc.
EmitOffsetVector3MinMaxNãoIntervalo de deslocamento aleatório para posição de spawn de partículas em cada eixo.
ParticleRotationInfluencestringNãoComo a rotação da partícula é calculada: "Billboard" (voltada para a câmera), "Velocity", etc.
LinearFilteringbooleanNãofalseUsar filtragem bilinear de textura em vez de vizinho mais próximo.
LightInfluencenumberNão1.0Quanto a iluminação da cena afeta a cor da partícula (0 = sem iluminação, 1 = totalmente iluminada).
MaxConcurrentParticlesnumberNão0Número máximo de partículas vivas. 0 significa ilimitado.
ParticleLifeSpanMinMaxNãoIntervalo aleatório para tempo de vida individual da partícula em segundos.
ParticleRotateWithSpawnerbooleanNãofalseSe as partículas herdam a rotação do emissor.
SpawnRateMinMaxNãoMilissegundos entre emissões de partículas (aleatório dentro do intervalo).
InitialVelocityVelocityConfigNãoVelocidade inicial em coordenadas esféricas.
AttractorsAttractor[]Não[]Atratores pontuais que puxam partículas.
ParticleParticleConfigSimTextura, keyframes de animação e estado inicial.
ParticleCollisionobjectNãoConfigurações de colisão para partículas atingindo blocos.

VelocityConfig

CampoTipoObrigatórioPadrãoDescrição
YawMinMaxNãoIntervalo de ângulo yaw aleatório em graus.
PitchMinMaxNãoIntervalo de ângulo pitch aleatório em graus.
SpeedMinMaxNãoIntervalo de velocidade aleatória em blocos por segundo.

Attractor

CampoTipoObrigatórioPadrãoDescrição
PositionVector3SimPosição do atrator relativa ao emissor.
RadialAxisVector3NãoEixo para aceleração radial.
RadiusnumberNão0Raio de influência do atrator.
RadialAccelerationnumberNão0Força radial para dentro (negativa) ou para fora (positiva).
RadialTangentAccelerationnumberNão0Força tangencial perpendicular à direção radial.
LinearAccelerationVector3NãoAceleração linear constante (ex.: gravidade).

ParticleConfig

CampoTipoObrigatórioPadrãoDescrição
TexturestringSimCaminho para a imagem de textura da partícula.
FrameSize{ Width, Height }NãoTamanho de um único quadro em uma textura de sprite sheet.
ScaleRatioConstraintstringNão"OneToOne" trava a escala X e Y juntas.
AnimationobjectNãoMapa de keyframes onde as chaves são porcentagens do tempo de vida ("0", "50", "100").
InitialAnimationFrameobjectNãoValores iniciais para rotação, escala, opacidade e índice de quadro.

Keyframe de Animação

Cada chave no objeto Animation é uma porcentagem do tempo de vida (0-100). Valores em cada keyframe:

CampoTipoDescrição
FrameIndexMinMaxIntervalo de índice de quadro do sprite sheet.
Scale{ X: MinMax, Y: MinMax }Escala neste ponto da vida da partícula.
Rotation{ X: MinMax, Y: MinMax, Z: MinMax }Rotação em graus.
OpacitynumberOpacidade de 0 (invisível) a 1 (totalmente opaco).
ColorstringMatiz de cor hexadecimal neste keyframe.

MinMax

CampoTipoDescrição
MinnumberValor mínimo do intervalo aleatório.
MaxnumberValor máximo do intervalo aleatório.

Exemplos

Sistema de partículas simples (Assets/Server/Particles/Dust_Sparkles_Fine.particlesystem):

{
"Spawners": [
{
"SpawnerId": "Dust_Sparkles_Fine",
"FixedRotation": true,
"WaveDelay": { "Min": 4, "Max": 36 }
},
{ "SpawnerId": "Dust_Sparkles_Fine" },
{ "SpawnerId": "Dust_Sparkles_Fine" }
],
"CullDistance": 30
}

Efeito com múltiplos emissores e atrasos (Assets/Server/Particles/Deployables/Healing_Totem/Totem_Heal_Simple_Test.json):

{
"Spawners": [
{ "SpawnerId": "Totem_Heal_Ground_Line", "PositionOffset": { "Z": 0 }, "FixedRotation": false, "StartDelay": 1.2 },
{ "SpawnerId": "Totem_Heal_Uhr", "PositionOffset": { "Y": 0.1 }, "StartDelay": 0.8 },
{ "SpawnerId": "Totem_Heal_Ground_Constant", "PositionOffset": { "Z": 0 }, "FixedRotation": false, "StartDelay": 0.5 },
{ "SpawnerId": "Totem_Heal_Sparks_Constant", "PositionOffset": { "Y": 0.5 }, "StartDelay": 0.5 }
],
"LifeSpan": 9,
"CullDistance": 100
}

Páginas Relacionadas