Verbesserung der Fahrzeug-Logik im Taxi-Spiel
Änderungen: - Implementierung einer Wartezeit von 1 Sekunde, bevor ein gestopptes Auto wieder fahren darf, um realistischere Bewegungen zu ermöglichen. - Anpassung der Distanzprüfung für das Wiederanfahren von Autos, um die Interaktion mit dem Taxi zu optimieren. - Entfernung der Rückwärtsbewegung bei Kollisionen mit stehenden Taxis, um das Verhalten zu vereinheitlichen. - Hinzufügen eines Zeitstempels für den Stopp eines Autos zur besseren Nachverfolgbarkeit. Diese Anpassungen verbessern die Fahrzeuginteraktion und die Kollisionserkennung im Spiel.
This commit is contained in:
@@ -1973,19 +1973,23 @@ export default {
|
|||||||
updateCarMovement(car) {
|
updateCarMovement(car) {
|
||||||
// Wenn das Auto gestoppt ist (nach Kollision mit stehendem Taxi), prüfe ob Taxi weg ist
|
// Wenn das Auto gestoppt ist (nach Kollision mit stehendem Taxi), prüfe ob Taxi weg ist
|
||||||
if (car.isStopped) {
|
if (car.isStopped) {
|
||||||
// Prüfe ob das Taxi noch in der Nähe ist (Kollisionsabstand + 50px Puffer)
|
// Mindestens 1 Sekunde warten, bevor das Auto wieder fahren darf
|
||||||
|
const now = Date.now();
|
||||||
|
const minWaitTime = 1000; // 1 Sekunde
|
||||||
|
|
||||||
|
if (car.stopTime && (now - car.stopTime) < minWaitTime) {
|
||||||
|
return; // Noch nicht lange genug gestoppt
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prüfe ob das Taxi noch in der Nähe ist
|
||||||
const distance = Math.sqrt(
|
const distance = Math.sqrt(
|
||||||
Math.pow(car.x - this.taxi.x, 2) + Math.pow(car.y - this.taxi.y, 2)
|
Math.pow(car.x - this.taxi.x, 2) + Math.pow(car.y - this.taxi.y, 2)
|
||||||
);
|
);
|
||||||
const collisionDistance = 80; // Etwa die Größe der Kollisionsboxen
|
|
||||||
|
|
||||||
console.log(`Auto ${car.id} gestoppt - Distanz zum Taxi: ${distance.toFixed(1)}px`);
|
if (distance > 40) {
|
||||||
|
|
||||||
if (distance > 30) {
|
|
||||||
// Taxi ist weg - Auto kann wieder fahren
|
// Taxi ist weg - Auto kann wieder fahren
|
||||||
car.isStopped = false;
|
car.isStopped = false;
|
||||||
car.speed = car.originalSpeed || 0.5; // Ursprüngliche Geschwindigkeit wiederherstellen
|
car.speed = car.originalSpeed || 0.5; // Ursprüngliche Geschwindigkeit wiederherstellen
|
||||||
console.log(`Auto ${car.id} kann wieder fahren - Taxi ist weg (Distanz: ${distance.toFixed(1)}px)`);
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -3011,22 +3015,10 @@ export default {
|
|||||||
handleCarTaxiCollision(car) {
|
handleCarTaxiCollision(car) {
|
||||||
// Wenn das Taxi steht (speed = 0), soll das Auto zurückfahren und stehen bleiben
|
// Wenn das Taxi steht (speed = 0), soll das Auto zurückfahren und stehen bleiben
|
||||||
if (Math.abs(this.taxi.speed) < 0.1) {
|
if (Math.abs(this.taxi.speed) < 0.1) {
|
||||||
// Auto 10 Pixel zurückfahren in entgegengesetzter Richtung
|
// Auto zum Stehen bringen OHNE Zurücksetzen
|
||||||
const backDistance = 10;
|
|
||||||
|
|
||||||
if (car.direction === 'up') {
|
|
||||||
car.y += backDistance;
|
|
||||||
} else if (car.direction === 'down') {
|
|
||||||
car.y -= backDistance;
|
|
||||||
} else if (car.direction === 'left') {
|
|
||||||
car.x += backDistance;
|
|
||||||
} else if (car.direction === 'right') {
|
|
||||||
car.x -= backDistance;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Auto zum Stehen bringen
|
|
||||||
car.speed = 0;
|
car.speed = 0;
|
||||||
car.isStopped = true;
|
car.isStopped = true;
|
||||||
|
car.stopTime = Date.now(); // Zeitpunkt des Stopps merken
|
||||||
|
|
||||||
console.log(`Auto ${car.id} ist mit stehendem Taxi kollidiert und steht jetzt`);
|
console.log(`Auto ${car.id} ist mit stehendem Taxi kollidiert und steht jetzt`);
|
||||||
} else {
|
} else {
|
||||||
@@ -3706,13 +3698,6 @@ export default {
|
|||||||
// Zeichne Autos
|
// Zeichne Autos
|
||||||
this.drawCars();
|
this.drawCars();
|
||||||
|
|
||||||
// Debug: Kollision-Overlays zeichnen (falls vorhanden)
|
|
||||||
if (this._collisionDebug && this._collisionDebug.ttl > 0) {
|
|
||||||
const dbg = this._collisionDebug;
|
|
||||||
this._drawDebugPoly(dbg.aCorners, 'rgba(255,0,0,0.35)', '#ff0000');
|
|
||||||
this._drawDebugPoly(dbg.bCorners, 'rgba(0,128,255,0.35)', '#0080ff');
|
|
||||||
dbg.ttl -= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Zeichne Taxi
|
// Zeichne Taxi
|
||||||
this.ctx.save();
|
this.ctx.save();
|
||||||
|
|||||||
Reference in New Issue
Block a user