Files
Documentation/content/gameplay-systems/camera-effects.fr.md
2026-01-20 20:33:59 +01:00

192 lines
3.8 KiB
Markdown

---
title: Effets Camera
type: docs
weight: 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:
```java
getCodecRegistry(CameraEffect.CODEC).register(
"CameraShake",
CameraShakeEffect.class,
CameraShakeEffect.CODEC
);
```
### Asset CameraShake
Definitions de tremblements chargees depuis `Camera/CameraShake/`:
```java
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
```yaml
# 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
```java
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
```yaml
# Camera/ViewBobbing/walking.json
{
"Id": "WALKING",
"HorizontalAmplitude": 0.02,
"VerticalAmplitude": 0.01,
"Frequency": 2.0
}
```
## Interactions
### CameraShakeInteraction
Declencher un tremblement depuis les interactions:
```java
getCodecRegistry(Interaction.CODEC).register(
"CameraShake",
CameraShakeInteraction.class,
CameraShakeInteraction.CODEC
);
```
### Exemple d'Utilisation
```yaml
# Interaction d'item ou bloc
{
"Type": "CameraShake",
"ShakeId": "explosion",
"Intensity": 0.5
}
```
## Systemes
### CameraEffectSystem
Systeme ECS pour traiter les effets camera:
```java
getEntityStoreRegistry().registerSystem(new CameraEffectSystem());
```
## Commandes
### CameraEffectCommand
Commande admin pour tester les effets camera:
```java
getCommandRegistry().registerCommand(new CameraEffectCommand());
```
Utilisation:
```
/cameraeffect <effect_id> [intensity] [duration]
```
## Utilisation de l'API
### Appliquer un Tremblement
```java
// Via le systeme d'interaction
// Definir dans JSON asset et declencher via interaction
// Ou programmatiquement via CameraEffectSystem
```
### Obtenir les Assets Camera
```java
// 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:
```java
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:
```java
.loadsBefore(CameraEffect.class)
```
Cela assure que les definitions de tremblement sont disponibles quand les effets camera les referencent.