Optimierung der Kollisionsboxen für Taxi und Autos im Taxi-Spiel

Änderungen:
- Anpassung der Kollisionsbox für das Taxi, um realistischere Dimensionen zu berücksichtigen (95% Länge, 80% Breite).
- Verfeinerung der Kollisionsbox für Autos, um die schmale Breite besser zu berücksichtigen (90% Länge, 50% Breite).
- Deaktivierung der Debug-Anzeige für die Crash-Bereiche der Autos.

Diese Anpassungen verbessern die Kollisionserkennung und die Spielmechanik durch realistischere Hitboxen.
This commit is contained in:
Torsten Schulz (local)
2025-10-20 18:16:27 +02:00
parent 8366567c2c
commit 18105af123

View File

@@ -3588,13 +3588,20 @@ export default {
let w = rect.width;
let h = rect.height;
if (rect === this.taxi) {
w = Math.max(0, rect.width * 0.70); // 70% der visuellen Breite
h = Math.max(0, rect.height * 0.90); // 90% der visuellen Höhe
// Taxi: Realistische Kollisionsbox basierend auf SVG (297x506 in 512x512 frame)
// Das Taxi ist etwa 1.7:1 (Länge:Breite) - also länger und breiter als normale Autos
// rect.width und rect.height variieren je nach Rotation
w = Math.max(0, rect.width * 0.95); // Länge ~95% (größer für bessere Kollision)
h = Math.max(0, rect.height * 0.80); // Breite ~80% (größer für bessere Kollision)
} else if (rect.isCar) {
// Autos fahren nur links/rechts → Fahrzeuglänge = horizontal (w), Fahrzeugbreite = vertikal (h)
// Daher: Länge kaum kürzen, Breite deutlich schmaler
w = Math.max(0, rect.width * 0.90); // Länge ~90%
h = Math.max(0, rect.height * 0.57); // Breite ~65%
// Autos: Realistische Kollisionsbox basierend auf SVG (219x512 in 512x512 frame)
// Das reale Auto ist sehr lang und schmal (etwa 2.3:1 Verhältnis)
// rect.width=60, rect.height=50
// Die längere Dimension (60) entspricht der Fahrzeuglänge
// Die kürzere Dimension (50) entspricht der Fahrzeugbreite
// Kollisionsbox sollte die schmale Breite berücksichtigen
w = Math.max(0, rect.width * 0.90); // Länge ~90% (54px von 60px)
h = Math.max(0, rect.height * 0.50); // Breite nur ~50% (25px von 50px) wegen schmalem SVG
}
const hw = Math.max(0, w / 2 - pad);
const hh = Math.max(0, h / 2 - pad);
@@ -3741,9 +3748,9 @@ export default {
this.ctx.restore();
// Debug: permanenten Crash-Bereich (Hitbox) der Autos anzeigen
const obb = this._buildObb(car, 2);
this._drawDebugPoly(obb.corners, 'rgba(255,165,0,0.15)', '#ffa500');
// Debug: permanenten Crash-Bereich (Hitbox) der Autos anzeigen (deaktiviert)
// const obb = this._buildObb(car, 2);
// this._drawDebugPoly(obb.corners, 'rgba(255,165,0,0.15)', '#ffa500');
});
},