From 1a7604a7d60d27266d77cb2073352c4cf1cd28be Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Thu, 6 Aug 2026 02:39:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=9F=E7=A7=8D=E8=A1=94=E6=8E=A5=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=EF=BC=9A=E8=BA=AB=E4=BD=93=E5=8A=A0=E9=95=BF=E8=87=B3?= =?UTF-8?q?y18=E8=A6=86=E4=BD=8F=E5=B0=BE=E6=A0=B9=EF=BC=88=E5=B0=BE?= =?UTF-8?q?=E5=B7=B4=E5=85=88=E7=94=BB=E5=8E=8B=E8=BA=AB=E4=B8=8B=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E5=88=86=E7=A6=BB=EF=BC=89=EF=BC=9BP1?= =?UTF-8?q?=E8=8A=B1=E5=BC=B9/P2=E5=B0=BE=E6=BF=80=E5=85=89=E5=8F=91?= =?UTF-8?q?=E5=B0=84=E7=82=B9=E7=B2=BE=E7=A1=AE=E5=AF=B9=E9=BD=90=E5=B0=BE?= =?UTF-8?q?=E7=AB=AF=E7=94=9F=E6=AE=96=E8=85=94=E5=85=89=E7=82=B9=EF=BC=88?= =?UTF-8?q?oy=3D34/40=EF=BC=89=E3=80=82=E4=BB=85=E8=AF=AD=E6=B3=95?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E9=80=9A=E8=BF=87=EF=BC=8C=E6=9C=AA=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star-raid/js/enemies.js | 4 ++-- star-raid/js/render.js | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/star-raid/js/enemies.js b/star-raid/js/enemies.js index a49e57f..87fed20 100644 --- a/star-raid/js/enemies.js +++ b/star-raid/js/enemies.js @@ -356,10 +356,10 @@ function bossMain(b,def,fm){ case "spawn": { // 太空原种:花弹从腹末生殖腔喷出(发射点=生殖腔摆动,与drawProgenitor同源公式);P1三波起手偏左 / P2生殖腔血光柱+翼尖花弹 if(ph===0){const swx=Math.sin(b.t*0.055+2.8)*5.2; for(let k=0;k<3;k++)for(let i=-2;i<=2;i++){ - const bb=ebul(b.x+swx,b.y+30,a0+i*0.16+(k-1)*0.09+[0.2,0.1,0][k],1.5+k*0.2,"flowr",14); + const bb=ebul(b.x+swx,b.y+34,a0+i*0.16+(k-1)*0.09+[0.2,0.1,0][k],1.5+k*0.2,"flowr",14); bb.grow=0.007;bb.maxS=2.8;bb.scale=0.9;} b.mainT=Math.round(84/fm); - }else{bossBeam(b.x,b.y+30,b.x+clamp(ap2.x-b.x,-50,50)*0.5,H+10,9,"#ff5c8a",30,44,22,{b,ox:0,oy:30}); + }else{bossBeam(b.x,b.y+40,b.x+clamp(ap2.x-b.x,-50,50)*0.5,H+10,9,"#ff5c8a",30,44,22,{b,ox:0,oy:40}); for(const sd of[-1,1])for(let i=0;i<3;i++){ const bb=ebul(b.x+sd*50,b.y-2,Math.PI/2+sd*(0.35+i*0.2),1.6,"flowr",13); bb.grow=0.008;bb.maxS=3;bb.scale=0.9;} diff --git a/star-raid/js/render.js b/star-raid/js/render.js index 56dc153..091aee1 100644 --- a/star-raid/js/render.js +++ b/star-raid/js/render.js @@ -263,7 +263,7 @@ function drawBoss(){ ctx.fillText(b.transT>0?b.name:(b.name+" "+Math.ceil(pc*100)+"%"),W/2,22); } /* ---- Boss 分体绘制助手 ---- */ -function drawProgenitor(b,t,fl,tf){ // 太空原种·装甲虫兽(tf 0=装甲态→1=血肉态):P1小翅芽→P2骨膜巨翼;无复眼(大颚+感器红缝=虫形压迫感);摆尾与躯体分离悬空 +function drawProgenitor(b,t,fl,tf){ // 太空原种·装甲虫兽(tf 0=装甲态→1=血肉态):P1小翅芽→P2骨膜巨翼;无复眼(大颚+感器红缝=虫形压迫感);摆尾衔接于躯体之下(尾根被加长的身体覆住,无缝) ctx.rotate(Math.sin(t*0.05)*0.04); // 悬停微摇 const wS=0.22+0.78*tf; // 翼展:P1小翅芽→P2全展(同一对翼连续缩放) // —— 骨膜翼一对:3根骨刺撑起膜面(P1灰甲小翼→P2血红膜+暗红骨,同一几何体罩色) —— @@ -278,7 +278,7 @@ function drawProgenitor(b,t,fl,tf){ // 太空原种·装甲虫兽(tf 0=装甲 for(const tp of[[14,-15],[34,-15],[54,-9]])drawSeg(2,-2,tp[0],tp[1],2,"#7a1622",tf); // P2骨刺转暗红 ctx.globalAlpha=1;} ctx.restore();} - // —— 摆尾:与躯体分离悬空(9px空隙),5节逐节相位摆动;P2节间血红肉显露+整体伸长 —— + // —— 摆尾:先画在躯体下层(尾根被加长的身体覆住,无缝衔接),5节逐节相位摆动;P2节间血红肉显露+整体伸长 —— const segH=5.2+tf*1.6,gap=11; for(let i=4;i>=0;i--){const sw=Math.sin(t*0.055+i*0.7)*(1.2+i),sy=gap+i*segH,hw=9-i*1.5; if(tf>0&&i<4){ctx.globalAlpha=tf*0.85;px(sw-hw+2,sy+segH-2,(hw-2)*2,2,"#c8202e");ctx.globalAlpha=1;} // 节间血肉环 @@ -291,13 +291,13 @@ function drawProgenitor(b,t,fl,tf){ // 太空原种·装甲虫兽(tf 0=装甲 circ(swT,tipY+2,1.1,"#ffdfe5"); // —— 壳下血肉(常存于背甲之下,滑开才见;血红,非粉) —— if(tf>0){ctx.globalAlpha=tf*0.9; - poly([0,-36,9,-29,11,-14,7,0,0,3,-7,0,-11,-14,-9,-29],"#c8202e"); - px(-2,-30,4,26,"#e8393a");ctx.globalAlpha=1;} + poly([0,-36,9,-29,11,-14,8,2,5,16,0,20,-5,16,-8,2,-11,-14,-9,-29],"#c8202e"); + px(-2,-30,4,46,"#e8393a");ctx.globalAlpha=1;} // —— 背甲两瓣:沿背脊中线裂开,P2向外滑开(同一多边形平移) —— for(const sd of[-1,1]){ctx.save();ctx.translate(sd*tf*7,0); - poly([0,-40,sd*11,-37,sd*15,-28,sd*13,-12,sd*9,0,0,2],sd<0?"#c9d6e2":"#9fb0c2"); + poly([0,-40,sd*11,-37,sd*15,-28,sd*13,-12,sd*10,4,sd*6,14,0,18],sd<0?"#c9d6e2":"#9fb0c2"); poly([0,-40,sd*11,-37,sd*15,-28,sd*7,-26,sd*5,-36],"#e8f0f6"); // 受光斜面 - for(let i=0;i<3;i++)px(sd*(4+i*3.4)-1,-24+i*8,2,5,"#5a6c80"); // 甲片板缝 + for(let i=0;i<4;i++)px(sd*(4+i*2.8)-1,-24+i*9,2,5,"#5a6c80"); // 甲片板缝 const crk=Math.max(0,Math.min(1,(tf-0.15)/0.4))*10; // 裂纹随tf生长(延长,非新增) if(crk>0.5)px(sd*6-1,-18,2,crk,"#8a2a3a"); ctx.restore();}