2023-02-22 09:50:51 +08:00

62 lines
1.2 KiB
TypeScript

import { _decorator, Color, Component, Material, math, MeshRenderer, Node, randomRange, randomRangeInt } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('FxLightFlash')
export class FxLightFlash extends Component {
matLight:Material | undefined | null;
lightColor:Color = new Color(255, 255, 255, 255);
lightValueMax = 10;
lightValueMin = 200;
length = 0;
flashTimes = 3;
value = 0;
t = 0;
smooth = 10;
isFlash = false;
start() {
this.matLight = this.node.getComponent(MeshRenderer)?.materials[0];
this.onFlash();
}
onFlash() {
this.flashTimes = randomRangeInt(1, 5);
this.lightValueMax = 255;
this.lightValueMin = randomRangeInt(180, 200);
this.length = this.lightValueMax - this.lightValueMin;
this.value = this.lightValueMax;
}
update(deltaTime: number) {
this.t += deltaTime;
this.value = math.pingPong(this.t * this.smooth, this.length) + this.lightValueMin;
this.lightColor.a = this.value;
this.lightColor.g = this.value;
this.lightColor.b = this.value;
this.matLight?.setProperty('emissive', this.lightColor);
}
}