feat: 智慧塔弹幕战攻击音效

This commit is contained in:
unanmed 2024-11-16 23:23:15 +08:00
parent b5b435d133
commit b353eba55c
2 changed files with 25 additions and 9 deletions

View File

@ -319,14 +319,9 @@ export namespace Hitbox {
* 线
*/
export function checkLineLine(line1: Line, line2: Line) {
const x1 = line1.x1;
const y1 = line1.y1;
const x2 = line1.x2;
const y2 = line1.y2;
const x3 = line2.x1;
const y3 = line2.y1;
const x4 = line2.x2;
const y4 = line2.y2;
const { x1, y1, x2, y2 } = line1;
const { x1: x3, y1: y3, x2: x4, y2: y4 } = line2;
if (
Math.max(x1, x2) < Math.min(x3, x4) ||
Math.min(x1, x2) < Math.max(x3, x4) ||

View File

@ -31,6 +31,7 @@ export class ArrowProjectile extends Projectile<TowerBoss> {
direction: ProjectileDirection = ProjectileDirection.Horizontal;
private damaged: boolean = false;
private sounded: boolean = false;
/**
* boss战开始时初始化
@ -103,6 +104,10 @@ export class ArrowProjectile extends Projectile<TowerBoss> {
ai(boss: TowerBoss, time: number, frame: number): void {
if (time > 3000) {
if (!this.sounded) {
core.playSound('arrow.mp3');
this.sounded = true;
}
const progress = (time - 3000) / 2000;
const res = ArrowProjectile.easing!(progress);
const dx = res * 640;
@ -319,6 +324,7 @@ export class ThunderProjectile extends Projectile<TowerBoss> {
private power: number = 0;
private damaged: boolean = false;
private cached: boolean = false;
private sounded: boolean = false;
private effect?: PointEffect;
private effectId?: number;
@ -380,6 +386,12 @@ export class ThunderProjectile extends Projectile<TowerBoss> {
}
ai(boss: TowerBoss, time: number, frame: number): void {
if (time > 1000) {
if (!this.sounded) {
core.playSound('thunder.mp3');
this.sounded = true;
}
}
if (time > 2000) {
this.destroy();
}
@ -413,7 +425,11 @@ export class ThunderProjectile extends Projectile<TowerBoss> {
);
effect.setEffect(id, void 0, [effectRatio, 0, 0, 0]);
}
ctx.globalAlpha = 1 - progress;
if (progress < 0.5) {
ctx.globalAlpha = 1;
} else {
ctx.globalAlpha = 1 - (progress - 0.5) * 2;
}
ctx.drawImage(ThunderProjectile.cache.canvas, x - 60, 0);
ctx.globalAlpha = before;
}
@ -457,6 +473,7 @@ export class ThunderBallProjectile extends Projectile<TowerBoss> {
private cx: number = 0;
private cy: number = 0;
private damaged: boolean = false;
private sounded: boolean = false;
/**
* boss战开始时初始化
@ -528,6 +545,10 @@ export class ThunderBallProjectile extends Projectile<TowerBoss> {
ai(boss: TowerBoss, time: number, frame: number): void {
if (time > 3000) {
if (!this.sounded) {
core.playSound('electron.mp3');
this.sounded = true;
}
const dt = time - 3000;
const dis = dt * 0.2;
const cx = this.cx * 32 + 16;