From 90c31ba38d7de1e86a794d1ae77ea71c8e8f36bd Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Thu, 6 Aug 2026 14:41:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=92=A2=E7=90=B4Boss=E5=A4=A7=E6=BF=80?= =?UTF-8?q?=E5=85=89=EF=BC=9A=E5=8E=BB=E6=8E=89=E4=B8=8A=E4=B8=8B=E9=99=90?= =?UTF-8?q?=E5=88=B6+=E5=A2=9E=E5=8A=A0=E8=93=84=E5=8A=9B=E5=89=8D?= =?UTF-8?q?=E6=91=87=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 大激光判断:只检测水平位置(|p.x-炮塔x|<14),不再限制p.y范围 - 蓄力动画:炮塔口红光脉冲(半径2→7随进度扩大)+向下红色蓄力线(长度0→55随进度蔓延) - 蓄力线使用ctx.globalAlpha控制透明度,蓄力过半后明显可见 --- star-raid/js/boss_art.js | 10 +++++++++- star-raid/js/enemies.js | 6 +++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/star-raid/js/boss_art.js b/star-raid/js/boss_art.js index 1bfe5da..2da0fba 100644 --- a/star-raid/js/boss_art.js +++ b/star-raid/js/boss_art.js @@ -44,7 +44,15 @@ function drawPiano(b,t,fl,split){ for(const sd of[-1,1]){const px2=sd*(112+off0); circ(px2,2,5.5,"#33436a");circ(px2-1.5,0,2.5,"#55648a"); px(px2-1.5,4,3,8,"#1b2434"); - px(px2-1,10,2,3,b.pedT>0?"#ffffff":(sd<0?"#b98cff":"#43e8ff"));}} + px(px2-1,10,2,3,b.pedT>0?"#ffffff":(sd<0?"#b98cff":"#43e8ff")); + // 大激光蓄力动画(1秒前摇:红光脉冲+向下蔓延蓄力线) + const prog=sd<0?((b.pedLasL||0)/60):((b.pedLasR||0)/60); + if(prog>0){const a=Math.min(prog,1); + ctx.save();ctx.globalAlpha=Math.min(a*0.6,0.85); + circ(px2,10,2+a*5,"#ff3355"); // 炮塔口红光脉冲,随蓄力扩大 + const len=Math.floor(a*55); + if(len>1){px(px2-0.5,12,1,len,"#ff3355");} // 向下蓄力线(纹路蔓延) + ctx.restore();}}} // —— 舰桥+雷达(随半壳滑开) —— for(const sd of[-1,1]){ctx.save();ctx.translate(sd*split*30,0); px(sd<0?-10:0,-32,10,10,"#1b2434"); diff --git a/star-raid/js/enemies.js b/star-raid/js/enemies.js index a215c7a..21ac062 100644 --- a/star-raid/js/enemies.js +++ b/star-raid/js/enemies.js @@ -350,15 +350,15 @@ function updateBoss(){ } } const lck=(b.laserT||0)>0; // 巨宽核心激光期间压制其他攻击 - // 钢琴:大炮塔惩罚激光——玩家站在炮塔正下方蓄力1秒后发射99999伤害大激光 + // 钢琴:大炮塔惩罚激光——玩家站在炮塔水平正下方蓄力1秒后发射99999伤害大激光(不管上下远近,只管左右) if(b.idx===4&&!lck){ const off0=b.phase>=1?16:0,p=G.p; const leftX=b.x-(112+off0),rightX=b.x+(112+off0); - if(p.dead<=0&&Math.abs(p.x-leftX)<14&&p.y>b.y&&p.y=60){bossBeam(leftX,b.y+10,leftX,H+8,6,"#ff3355",10,40,99999,{b,ox:-(112+off0),oy:10,followX2:true});b.pedLasL=0;SFX.warn();} }else b.pedLasL=0; - if(p.dead<=0&&Math.abs(p.x-rightX)<14&&p.y>b.y&&p.y=60){bossBeam(rightX,b.y+10,rightX,H+8,6,"#ff3355",10,40,99999,{b,ox:(112+off0),oy:10,followX2:true});b.pedLasR=0;SFX.warn();} }else b.pedLasR=0;