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) },
|
||||
);
|
||||
|
||||
// === Fixed bumpers (3 в центральной зоне, симметрично) ===
|
||||
// === Fixed bumpers (5, симметрично относительно центра по обеим осям) ===
|
||||
// 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 fixedPositions: Array<[number, number]> = [
|
||||
[GAME_WIDTH * 0.25, 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) {
|
||||
this.fixedBumpers.push(
|
||||
|
||||
Reference in New Issue
Block a user