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

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.