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:
@@ -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');
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user