Files
pixelheros/assets/script/game/hero/hit-flash-white/scripts/FlashSprite.ts
panFD 24aff3baa3 refactor(hero): 移除 Boss 阶段描边相关未实现的代码
清理了 Boss 阶段描边功能的相关代码,包括移除了 resetPhaseOutline 和 setPhaseOutline 方法,删除了相关材质定义,将 onPhaseEnter 方法置空待后续迭代实现。
2026-10-10 00:27:29 +08:00

79 lines
2.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { _decorator, color, Component, Material, Node, Sprite } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('FlashSprite')
export class FlashSprite extends Component {
@property(Material)
hitFlashMaterial: Material | null = null;
@property({ type: Material, tooltip: '绿色描边材质(2级)' })
outlineMatGreen: Material | null = null;
@property({ type: Material, tooltip: '蓝色描边材质(3级)' })
outlineMatBlue: Material | null = null;
@property({ type: Material, tooltip: '紫色描边材质(4级)' })
outlineMatPurple: Material | null = null;
@property({ type: Material, tooltip: '黄色描边材质(5级)' })
outlineMatYellow: Material | null = null;
orginalFlashMaterial: Material | null = null;
defaultMaterial: Material | null = null; // 缓存最原始的无描边材质
sprite: Sprite | null = null;
start() {
this.sprite = this.node.getComponent(Sprite);
// 记录最初的默认材质(无描边)
if (this.sprite) {
this.defaultMaterial = this.sprite.getRenderMaterial(0);
if (!this.orginalFlashMaterial) {
this.orginalFlashMaterial = this.defaultMaterial;
}
}
}
/**
* 根据英雄等级设置描边材质
* @param level 英雄等级 (1=无描边, 2=绿, 3=蓝, 4=紫, 5=黄)
*/
public setOutlineByLevel(level: number) {
if (!this.sprite) {
this.sprite = this.node.getComponent(Sprite);
}
let targetMat: Material | null = null;
if (level === 2) {
targetMat = this.outlineMatGreen;
} else if (level === 3) {
targetMat = this.outlineMatBlue;
} else if (level === 4) {
targetMat = this.outlineMatPurple;
} else if (level >= 5) {
targetMat = this.outlineMatYellow;
} else {
// 1级或异常情况,使用最原始的无描边材质
targetMat = this.defaultMaterial;
}
if (targetMat && this.sprite) {
// 更新基础材质,确保闪白结束后恢复到这个描边材质
this.orginalFlashMaterial = targetMat;
this.sprite.setSharedMaterial(targetMat, 0);
}
}
public clickFlash() {
if (!this.sprite || !this.hitFlashMaterial) return;
this.sprite.setSharedMaterial(this.hitFlashMaterial, 0);
this.scheduleOnce(() => {
if (this.sprite && this.orginalFlashMaterial) {
this.sprite.setSharedMaterial(this.orginalFlashMaterial, 0);
}
}, 0.1);
}
}