Änderung: Anpassung der Straßenkoordinaten und Optimierung der Kollisionserkennung im Taxi-Spiel
Änderungen: - Entfernung der `tileSize` aus der JSON-Datei, um die Handhabung der Koordinaten zu vereinheitlichen. - Anpassung der Methode `getDriveableRegions`, um relative Koordinaten (0-1) direkt zurückzugeben. - Aktualisierung der Kollisionserkennung im Taxi-Spiel zur Verwendung von absoluten Pixel-Koordinaten anstelle von relativen. - Verbesserung der Lesbarkeit und Wartbarkeit des Codes durch Bereinigung überflüssiger Konvertierungen. Diese Anpassungen erhöhen die Effizienz der Kollisionserkennung und verbessern die Handhabung der Straßenkoordinaten im Spiel.
This commit is contained in:
@@ -36,31 +36,28 @@ class StreetCoordinates {
|
||||
/**
|
||||
* Gibt die Straßenregionen für einen Tile-Typ zurück
|
||||
* @param {string} tileType - Typ des Tiles (z.B. 'cornerBottomRight')
|
||||
* @param {number} tileSize - Größe des Tiles in Pixeln
|
||||
* @returns {Array} Array von Polygonen mit absoluten Koordinaten
|
||||
* @returns {Array} Array von Polygonen mit relativen Koordinaten (0-1)
|
||||
*/
|
||||
getDriveableRegions(tileType, tileSize) {
|
||||
getDriveableRegions(tileType) {
|
||||
const tile = this.data.tiles[tileType];
|
||||
if (!tile) {
|
||||
console.warn(`Tile type '${tileType}' not found`);
|
||||
return [];
|
||||
}
|
||||
|
||||
return tile.regions.map(region =>
|
||||
region.map(point => this.toAbsolute(point.x, point.y, tileSize))
|
||||
);
|
||||
// Gib die relativen Koordinaten (0-1) direkt zurück
|
||||
return tile.regions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüft, ob ein Punkt innerhalb der fahrbaren Bereiche liegt
|
||||
* @param {number} x - X-Koordinate des Punktes
|
||||
* @param {number} y - Y-Koordinate des Punktes
|
||||
* @param {number} x - X-Koordinate des Punktes (relativ 0-1)
|
||||
* @param {number} y - Y-Koordinate des Punktes (relativ 0-1)
|
||||
* @param {string} tileType - Typ des Tiles
|
||||
* @param {number} tileSize - Größe des Tiles in Pixeln
|
||||
* @returns {boolean} True wenn der Punkt fahrbar ist
|
||||
*/
|
||||
isPointDriveable(x, y, tileType, tileSize) {
|
||||
const regions = this.getDriveableRegions(tileType, tileSize);
|
||||
isPointDriveable(x, y, tileType) {
|
||||
const regions = this.getDriveableRegions(tileType);
|
||||
|
||||
for (const region of regions) {
|
||||
if (this.isPointInPolygon(x, y, region)) {
|
||||
@@ -98,7 +95,7 @@ class StreetCoordinates {
|
||||
* @param {number} offsetY - Y-Offset für das Tile
|
||||
*/
|
||||
drawDriveableRegions(ctx, tileType, tileSize, offsetX = 0, offsetY = 0) {
|
||||
const regions = this.getDriveableRegions(tileType, tileSize);
|
||||
const regions = this.getDriveableRegions(tileType);
|
||||
|
||||
ctx.fillStyle = '#f0f0f0'; // Straßenfarbe
|
||||
ctx.strokeStyle = '#333';
|
||||
@@ -106,10 +103,15 @@ class StreetCoordinates {
|
||||
|
||||
for (const region of regions) {
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(region[0].x + offsetX, region[0].y + offsetY);
|
||||
// Konvertiere relative Koordinaten zu absoluten für das Zeichnen
|
||||
const startX = region[0].x * tileSize + offsetX;
|
||||
const startY = region[0].y * tileSize + offsetY;
|
||||
ctx.moveTo(startX, startY);
|
||||
|
||||
for (let i = 1; i < region.length; i++) {
|
||||
ctx.lineTo(region[i].x + offsetX, region[i].y + offsetY);
|
||||
const x = region[i].x * tileSize + offsetX;
|
||||
const y = region[i].y * tileSize + offsetY;
|
||||
ctx.lineTo(x, y);
|
||||
}
|
||||
|
||||
ctx.closePath();
|
||||
|
||||
Reference in New Issue
Block a user