Init
This commit is contained in:
191
content/gameplay-systems/camera-effects.fr.md
Normal file
191
content/gameplay-systems/camera-effects.fr.md
Normal file
@@ -0,0 +1,191 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user