Symmetric 5-bumper fixed center layout
3 → 5 fixed bumpers: 2 верхних (AI side) + 1 центр + 2 нижних (player side). Раскладка зеркальна относительно centerY и vertical centerline. - Все source = 'fixed_last_touch' (defensive scoring v3.10 без изменений) - Type остаётся standard - Зона y ∈ 560..720 при centerY=640 — не пересекается с AI setup (y≤300), player setup (y≥980), флипперами (y=100, 1180) или touch zones (y≥1060) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -117,13 +117,18 @@ export class MatchScene extends Phaser.Scene {
|
|||||||
{ onHit: (_f, ballBody) => this.handleFlipperHit('ai', ballBody) },
|
{ onHit: (_f, ballBody) => this.handleFlipperHit('ai', ballBody) },
|
||||||
);
|
);
|
||||||
|
|
||||||
// === Fixed bumpers (3 в центральной зоне, симметрично) ===
|
// === Fixed bumpers (5, симметрично относительно центра по обеим осям) ===
|
||||||
// source = 'fixed_last_touch' → очки last-touch'еру (см. v3.10).
|
// source = 'fixed_last_touch' → очки last-touch'еру (см. v3.10).
|
||||||
|
// Раскладка: 2 верхних + 1 центр + 2 нижних, зеркал относительно centerY.
|
||||||
|
// Зона y ∈ {centerY-80, centerY, centerY+80} = 560..720 при centerY=640.
|
||||||
|
// Не пересекается с AI setup (y≤300), player setup (y≥980), флипперами или touch zones.
|
||||||
const cy = g.centerY;
|
const cy = g.centerY;
|
||||||
const fixedPositions: Array<[number, number]> = [
|
const fixedPositions: Array<[number, number]> = [
|
||||||
[GAME_WIDTH * 0.25, cy - 80],
|
[GAME_WIDTH * 0.25, cy - 80],
|
||||||
[GAME_WIDTH * 0.75, cy - 80],
|
[GAME_WIDTH * 0.75, cy - 80],
|
||||||
[GAME_WIDTH * 0.5, cy + 80],
|
[GAME_WIDTH * 0.5, cy],
|
||||||
|
[GAME_WIDTH * 0.25, cy + 80],
|
||||||
|
[GAME_WIDTH * 0.75, cy + 80],
|
||||||
];
|
];
|
||||||
for (const [fx, fy] of fixedPositions) {
|
for (const [fx, fy] of fixedPositions) {
|
||||||
this.fixedBumpers.push(
|
this.fixedBumpers.push(
|
||||||
|
|||||||
Reference in New Issue
Block a user