fix(ui): Höhe-Regler nachführen, Teleport-Warnfrist, SUV-Abstimmung
Der Höhe-Regler las den Höhenfaktor nur beim Bau des Panels und zeigte nach einem Figurenwechsel weiter den alten Wert; beim nächsten Ziehen überschrieb er die korrekt gesetzte Größe mit einem Sprung (Ruling 68). Der Teleport hielt den Spieler notfalls unbegrenzt still. Er bekommt dieselbe einmalige Warnung nach 15 s wie der Spawn, mit Frist je Sprung statt modulweit (Ruling 69). Der SUV bekommt metalness und roughness zurück, die der Kommentar darüber als unverändert zusicherte (Ruling 70). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
182db238c6
commit
0ece90e2ec
3 files changed
+105
-4
No files matched your search
+20
-2
@@ -139,6 +139,22 @@ async function buildMapMesh(manifest, baseUrl) {
|
||||
return mesh;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wechselt die Figur und führt den Höhe-Regler auf den tatsächlichen Wert nach (Fix-Runde 2,
|
||||
* Ruling 68). applyCharacter setzt state.currentHeightFactor bei jedem Wechsel neu (0,93 für
|
||||
* die weibliche Figur gegenüber 1 beim Mannequin), aber lil-gui bemerkt das nicht von selbst —
|
||||
* der Regler liest params.height nur einmal beim Bau des Panels. Ohne dieses Nachführen zeigt
|
||||
* er nach dem Wechsel weiter den alten Wert; zieht man ihn dann, rechnet applyHeight vom
|
||||
* falschen Ausgangswert los und überschreibt die korrekte Größe mit einem Sprung statt einer
|
||||
* kleinen Korrektur. `updateDisplay()` aktualisiert nur die Anzeige, löst kein erneutes
|
||||
* onChange aus — kein Rückkopplungsrisiko.
|
||||
*/
|
||||
export async function switchCharacterAndSyncHeight(characterModule, params, heightController, name) {
|
||||
await characterModule.switchCharacter(name);
|
||||
params.height = characterModule.state.currentHeightFactor;
|
||||
heightController.updateDisplay();
|
||||
}
|
||||
|
||||
/**
|
||||
* Baut das lil-gui-Debug-Panel (Task 11, Schritt 6): Figur, Frisur, Höhe, Hitbox anzeigen,
|
||||
* Chunk-Grenzen anzeigen, Kartenbild auf dem Boden, Sichtweite (Nebel) und Sprung zu
|
||||
@@ -181,11 +197,13 @@ export function createPanel({ player, characterModule, scene, manifest, baseUrl
|
||||
const gui = new GUI({ title: "Debug" });
|
||||
|
||||
const characterFolder = gui.addFolder("Figur");
|
||||
// heightController wird unten deklariert, aber erst beim tatsächlichen Figurenwechsel
|
||||
// gelesen (Klick, nicht Skriptausführung) — zu dem Zeitpunkt ist die const längst zugewiesen.
|
||||
characterFolder.add(params, "character", CHARACTERS.map((c) => c.name)).name("Figur")
|
||||
.onChange((value) => { void characterModule.switchCharacter(value); });
|
||||
.onChange((value) => { void switchCharacterAndSyncHeight(characterModule, params, heightController, value); });
|
||||
characterFolder.add(params, "hair", [HAIR_NONE, ...HAIRSTYLES]).name("Frisur")
|
||||
.onChange((value) => { void characterModule.switchHair(value); });
|
||||
characterFolder.add(params, "height", 0.7, 1.3, 0.01).name("Höhe")
|
||||
const heightController = characterFolder.add(params, "height", 0.7, 1.3, 0.01).name("Höhe")
|
||||
.onChange((value) => characterModule.applyHeight(value));
|
||||
characterFolder.add(params, "showHitbox").name("Hitbox anzeigen")
|
||||
.onChange((value) => player.setPlayerCapsuleDebug?.(value));
|
||||
|
||||
Reference in new issue
Block a user