3.8 KiB
title, type, weight
| title | type | weight |
|---|---|---|
| Effets Camera | docs | 6 |
Le systeme de camera fournit des effets d'ecran comme les tremblements et le balancement de vue.
Package: com.hypixel.hytale.builtin.adventure.camera
Architecture
CameraPlugin
├── Effets
│ ├── CameraShakeEffect - Effet de tremblement
│ └── CameraShake asset
├── Balancement de Vue
│ ├── ViewBobbing asset
│ └── ViewBobbingPacketGenerator
├── Interactions
│ └── CameraShakeInteraction
├── Systemes
│ └── CameraEffectSystem
└── Commandes
└── CameraEffectCommand
Tremblement de Camera
CameraShakeEffect
Type d'effet camera enregistre:
getCodecRegistry(CameraEffect.CODEC).register(
"CameraShake",
CameraShakeEffect.class,
CameraShakeEffect.CODEC
);
Asset CameraShake
Definitions de tremblements chargees depuis Camera/CameraShake/:
HytaleAssetStore.builder(String.class, CameraShake.class, new IndexedAssetMap())
.loadsBefore(CameraEffect.class)
.setPath("Camera/CameraShake")
.setKeyFunction(CameraShake::getId)
.setReplaceOnRemove(CameraShake::new)
.setPacketGenerator(new CameraShakePacketGenerator())
.build();
Configuration CameraShake
# Camera/CameraShake/explosion.json
{
"Id": "explosion",
"Intensity": 1.0,
"Duration": 0.5,
"Frequency": 10.0,
"FalloffDistance": 20.0
}
Balancement de Vue
Mouvement de camera pendant la locomotion du joueur:
Asset ViewBobbing
HytaleAssetStore.builder(MovementType.class, ViewBobbing.class, new DefaultAssetMap())
.setPath("Camera/ViewBobbing")
.setKeyFunction(ViewBobbing::getId)
.setPacketGenerator(new ViewBobbingPacketGenerator())
.build();
Indexe par enum MovementType pour differents etats de mouvement.
Configuration ViewBobbing
# Camera/ViewBobbing/walking.json
{
"Id": "WALKING",
"HorizontalAmplitude": 0.02,
"VerticalAmplitude": 0.01,
"Frequency": 2.0
}
Interactions
CameraShakeInteraction
Declencher un tremblement depuis les interactions:
getCodecRegistry(Interaction.CODEC).register(
"CameraShake",
CameraShakeInteraction.class,
CameraShakeInteraction.CODEC
);
Exemple d'Utilisation
# Interaction d'item ou bloc
{
"Type": "CameraShake",
"ShakeId": "explosion",
"Intensity": 0.5
}
Systemes
CameraEffectSystem
Systeme ECS pour traiter les effets camera:
getEntityStoreRegistry().registerSystem(new CameraEffectSystem());
Commandes
CameraEffectCommand
Commande admin pour tester les effets camera:
getCommandRegistry().registerCommand(new CameraEffectCommand());
Utilisation:
/cameraeffect <effect_id> [intensity] [duration]
Utilisation de l'API
Appliquer un Tremblement
// Via le systeme d'interaction
// Definir dans JSON asset et declencher via interaction
// Ou programmatiquement via CameraEffectSystem
Obtenir les Assets Camera
// Obtenir asset de tremblement
CameraShake shake = CameraShake.getAssetMap().getAsset("explosion");
// Obtenir balancement pour type de mouvement
ViewBobbing bobbing = ViewBobbing.getAssetMap().getAsset(MovementType.WALKING);
Generation de Paquets
Les tremblements et balancements utilisent des generateurs de paquets pour sync client:
public class CameraShakePacketGenerator implements PacketGenerator<CameraShake> {
// Genere paquets reseau pour tremblement
}
public class ViewBobbingPacketGenerator implements PacketGenerator<ViewBobbing> {
// Genere paquets reseau pour balancement
}
Dependances d'Assets
Les assets de tremblement chargent avant les effets camera:
.loadsBefore(CameraEffect.class)
Cela assure que les definitions de tremblement sont disponibles quand les effets camera les referencent.