原种衔接再修:身体末端改平头加宽至20px(背甲y20半宽10+血肉y22半宽8,P2滑开后仍重叠无缝),尾根摆动收窄(首节0.8系数,同源同步enemies)。仅语法检查通过,未运行验证
This commit is contained in:
parent
1a7604a7d6
commit
c94223bb7d
BIN
cache/crop_gap.png
vendored
Normal file
BIN
cache/crop_gap.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
@ -354,7 +354,7 @@ function bossMain(b,def,fm){
|
||||
for(let i=-2;i<=2;i++)ebul(b.x+i*12,b.y+16,a0+i*0.13,2.2+0.2*ph,"orbR");
|
||||
b.mainT=Math.round((ph?52:70)/fm);break;
|
||||
case "spawn": { // 太空原种:花弹从腹末生殖腔喷出(发射点=生殖腔摆动,与drawProgenitor同源公式);P1三波起手偏左 / P2生殖腔血光柱+翼尖花弹
|
||||
if(ph===0){const swx=Math.sin(b.t*0.055+2.8)*5.2;
|
||||
if(ph===0){const swx=Math.sin(b.t*0.055+2.8)*4.8;
|
||||
for(let k=0;k<3;k++)for(let i=-2;i<=2;i++){
|
||||
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;}
|
||||
|
||||
@ -280,22 +280,22 @@ function drawProgenitor(b,t,fl,tf){ // 太空原种·装甲虫兽(tf 0=装甲
|
||||
ctx.restore();}
|
||||
// —— 摆尾:先画在躯体下层(尾根被加长的身体覆住,无缝衔接),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;
|
||||
for(let i=4;i>=0;i--){const sw=Math.sin(t*0.055+i*0.7)*(0.8+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;} // 节间血肉环
|
||||
poly([sw-hw,sy,sw+hw,sy,sw+hw-2,sy+segH,sw-hw+2,sy+segH],i%2?"#b8c8d8":"#c9d6e2"); // 尾节甲片
|
||||
px(sw-hw,sy,3,segH,"#e8f0f6");px(sw+hw-3,sy,3,segH,"#8498ac"); // 左亮右暗
|
||||
for(const sd of[-1,1])poly([sw+sd*(hw+1),sy+1,sw+sd*(hw+4),sy+2.5,sw+sd*(hw+1),sy+4],"#e8dcc0"); // 节侧骨刺
|
||||
}
|
||||
const swT=Math.sin(t*0.055+2.8)*5.2,tipY=gap+4*segH; // 尾末生殖腔(花弹发射口,与enemies.js同源公式)
|
||||
const swT=Math.sin(t*0.055+2.8)*4.8,tipY=gap+4*segH; // 尾末生殖腔(花弹发射口,与enemies.js同源公式)
|
||||
circ(swT,tipY+2,2.6+Math.sin(t*0.11)*0.6,fl||(tf>0.5?"#ff2a3c":"#ff5566"));
|
||||
circ(swT,tipY+2,1.1,"#ffdfe5");
|
||||
// —— 壳下血肉(常存于背甲之下,滑开才见;血红,非粉) ——
|
||||
if(tf>0){ctx.globalAlpha=tf*0.9;
|
||||
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;}
|
||||
poly([0,-36,9,-29,11,-14,10,2,9,16,8,22,-8,22,-9,16,-10,2,-11,-14,-9,-29],"#c8202e");
|
||||
px(-2,-30,4,52,"#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*10,4,sd*6,14,0,18],sd<0?"#c9d6e2":"#9fb0c2");
|
||||
poly([0,-40,sd*11,-37,sd*15,-28,sd*13,-12,sd*12,4,sd*11,14,sd*10,20,0,20],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<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生长(延长,非新增)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user