Saltearse al contenido

Configuraciones de Proyectiles

Descripcion General

Los archivos de configuracion de proyectiles definen como un arma lanza un proyectil: el modelo utilizado, los parametros de fisica, la posicion de generacion y lo que sucede cuando el proyectil impacta, falla o rebota. Actuan como puente entre la accion de ataque de un arma y la entidad de proyectil en tiempo de ejecucion. Las configuraciones soportan herencia a traves de un campo Parent, permitiendo que las configuraciones base compartidas sean anuladas por arma.

Ubicacion de Archivos

Assets/Server/ProjectileConfigs/
Weapons/
Arrows/
Bows/
Crossbow/
Shortbow/
Staff/
Throwables/
...
NPCs/
_Debug/

Esquema

CampoTipoRequeridoPor defectoDescripcion
ParentstringNoID de otra configuracion de proyectil de la cual heredar campos. Los campos hijos anulan los campos del padre.
ModelstringNoID del modelo visual usado para el proyectil (por ejemplo, "Arrow_Crude", "Ice_Ball").
PhysicsPhysicsConfigNoParametros de simulacion de fisica. Ver abajo.
LaunchForcenumberNoFuerza escalar aplicada al lanzamiento, escalada por el nivel de carga cuando aplique.
LaunchLocalSoundEventIdstringNoEvento de sonido reproducido localmente para el tirador al lanzar.
LaunchWorldSoundEventIdstringNoEvento de sonido reproducido en el mundo (audible para jugadores cercanos) al lanzar.
SpawnOffsetVector3NoDesplazamiento en espacio local (X/Y/Z) desde el origen del arma donde se genera el proyectil.
SpawnRotationOffsetRotationOffsetNoRotacion adicional aplicada al proyectil al generarse.
InteractionsInteractionMapNoEventos de interaccion nombrados y sus listas de acciones encadenadas. Ver abajo.

PhysicsConfig

CampoTipoRequeridoPor defectoDescripcion
Type"Standard"No"Standard"Modelo de simulacion de fisica. Actualmente solo se usa "Standard".
GravitynumberNoAceleracion gravitacional aplicada por segundo.
TerminalVelocityAirnumberNoVelocidad maxima en el aire.
TerminalVelocityWaternumberNoVelocidad maxima en el agua.
RotationMode"VelocityDamped" | "Fixed"NoControla como la orientacion del proyectil sigue su vector de velocidad.
BouncinessnumberNo0Fraccion de velocidad retenida despues de un rebote en superficie.
BounceCountnumberNoNumero de veces que el proyectil puede rebotar antes de detenerse.
BounceLimitnumberNoNumero maximo de rebotes permitidos.
AllowRollingbooleanNofalseSi el proyectil puede rodar sobre superficies despues de rebotar.
SticksVerticallybooleanNofalseSi el proyectil se incrusta verticalmente en superficies al impactar.

Vector3

CampoTipoRequeridoPor defectoDescripcion
XnumberSiDesplazamiento lateral.
YnumberSiDesplazamiento vertical.
ZnumberSiDesplazamiento frontal.

RotationOffset

CampoTipoRequeridoPor defectoDescripcion
PitchnumberNo0Desplazamiento de inclinacion en grados.
YawnumberNo0Desplazamiento de giro en grados.
RollnumberNo0Desplazamiento de alabeo en grados.

InteractionMap

El objeto Interactions mapea nombres de eventos a objetos InteractionHandler. Claves de evento soportadas:

ClaveCuando se dispara
ProjectileSpawnInmediatamente cuando se crea el proyectil.
ProjectileHitCuando el proyectil impacta a una entidad.
ProjectileMissCuando el proyectil impacta el terreno o expira.
ProjectileBounceCuando el proyectil rebota en una superficie.

InteractionHandler

CampoTipoRequeridoPor defectoDescripcion
CooldownobjectNoEnfriamiento opcional que controla este manejador.
Interactionsstring[] | object[]SiLista ordenada de IDs de interaccion nombrados o definiciones de interaccion en linea para ejecutar.

Ejemplos

Configuracion base de flecha (Assets/Server/ProjectileConfigs/Weapons/Arrows/Projectile_Config_Arrow_Base.json):

{
"Model": "Arrow_Crude",
"SpawnRotationOffset": {
"Pitch": 2,
"Yaw": 0.25,
"Roll": 0
},
"Physics": {
"Type": "Standard",
"Gravity": 15,
"TerminalVelocityAir": 50,
"TerminalVelocityWater": 15,
"RotationMode": "VelocityDamped",
"Bounciness": 0.0,
"SticksVertically": true
},
"LaunchForce": 30,
"SpawnOffset": {
"X": 0.15,
"Y": -0.25,
"Z": 0
}
}

Flecha de arco a dos manos (Projectile_Config_Arrow_Two_Handed_Bow.json) — hereda de la base y agrega interacciones:

{
"Parent": "Projectile_Config_Arrow_Base",
"LaunchLocalSoundEventId": "SFX_Bow_T2_Shoot",
"LaunchWorldSoundEventId": "SFX_Bow_T2_Shoot",
"LaunchForce": 5,
"Interactions": {
"ProjectileHit": {
"Interactions": [
"Bow_Two_Handed_Projectile_Damage",
"Bow_Two_Handed_Projectile_Damage_End"
]
},
"ProjectileMiss": {
"Interactions": [
"Bow_Two_Handed_Projectile_Miss",
"Bow_Two_Handed_Projectile_Miss_End"
]
}
}
}

Configuracion de bola de hielo de baston (Assets/Server/ProjectileConfigs/Weapons/Staff/Ice/Projectile_Config_Ice_Ball.json):

{
"Model": "Ice_Ball",
"LaunchForce": 30,
"Physics": {
"Type": "Standard",
"Gravity": 4.4,
"TerminalVelocityAir": 42.5,
"TerminalVelocityWater": 15,
"RotationMode": "VelocityDamped",
"Bounciness": 0.0,
"SticksVertically": true
},
"LaunchWorldSoundEventId": "SFX_Staff_Ice_Shoot",
"Interactions": {
"ProjectileHit": {
"Interactions": [
{
"Parent": "DamageEntityParent",
"DamageCalculator": {
"Class": "Charged",
"BaseDamage": { "Ice": 20 }
},
"DamageEffects": {
"Knockback": {
"Type": "Force",
"Force": 20,
"VelocityType": "Set"
},
"WorldParticles": [
{ "SystemId": "Impact_Ice" },
{ "SystemId": "IceBall_Explosion" }
],
"WorldSoundEventId": "SFX_Ice_Ball_Death"
}
},
{ "Type": "RemoveEntity", "Entity": "User" }
]
},
"ProjectileMiss": {
"Interactions": [
{
"Type": "Simple",
"Effects": {
"WorldSoundEventId": "SFX_Ice_Ball_Death",
"WorldParticles": [
{ "SystemId": "IceBall_Explosion" }
]
}
},
{ "Type": "RemoveEntity", "Entity": "User" }
]
}
}
}

Paginas Relacionadas

  • Proyectiles — fisica de proyectiles y valores de dano
  • Tipos de Dano — jerarquia de tipos de dano usada en BaseDamage