颜色显示修正
This commit is contained in:
1 parent
9c2421110c
commit
535f8d7558
9 files changed
+2197
-48
No files matched your search
@@ -57,7 +57,7 @@ export interface ParticleImageResource {
|
||||
anchorX: number
|
||||
anchorY: number
|
||||
/** 每张贴图独立的颜色、混合与透明度设置 */
|
||||
colorMode: 'fixed' | 'lifetime'
|
||||
colorMode: 'fixed' | 'random' | 'lifetime'
|
||||
colorStart: string
|
||||
colorEnd: string
|
||||
colorGradient: ColorGradientStop[]
|
||||
@@ -661,7 +661,7 @@ export function ensureEmitterConfig(config: EmitterConfig): EmitterConfig {
|
||||
if (!Number.isFinite(resource.scale)) resource.scale = 1
|
||||
if (!Number.isFinite(resource.anchorX)) resource.anchorX = 0.5
|
||||
if (!Number.isFinite(resource.anchorY)) resource.anchorY = 0.5
|
||||
if (resource.colorMode !== 'fixed' && resource.colorMode !== 'lifetime') {
|
||||
if (resource.colorMode !== 'fixed' && resource.colorMode !== 'random' && resource.colorMode !== 'lifetime') {
|
||||
resource.colorMode = config.colorOverLife ? 'lifetime' : 'fixed'
|
||||
}
|
||||
if (!resource.colorStart) resource.colorStart = config.colorStart || '#ffffff'
|
||||
@@ -837,6 +837,8 @@ interface Particle {
|
||||
trailSampledLength: number
|
||||
trailSampledWidth: number
|
||||
resourceId: number
|
||||
/** 随机颜色模式下,粒子出生时从卡片色带采样并在生命周期内保持的颜色。 */
|
||||
colorSample: number
|
||||
imageFrameIndex: number
|
||||
collisionPaused: boolean
|
||||
}
|
||||
@@ -926,6 +928,7 @@ export class ParticleEmitter extends Container {
|
||||
trailSampledLength: 100,
|
||||
trailSampledWidth: 100,
|
||||
resourceId: 1,
|
||||
colorSample: 0xffffff,
|
||||
imageFrameIndex: 0,
|
||||
collisionPaused: false,
|
||||
})
|
||||
@@ -1191,6 +1194,8 @@ export class ParticleEmitter extends Container {
|
||||
const colorStart = resource?.colorStart || '#ffffff'
|
||||
const rgb = resource?.colorMode === 'lifetime'
|
||||
? gradientColorAt(resource.colorGradient, t)
|
||||
: resource?.colorMode === 'random'
|
||||
? p.colorSample
|
||||
: hexToNumber(colorStart)
|
||||
s.tint = rgb
|
||||
s.blendMode = BLEND_MAP[resource?.blend || 'normal'] as any
|
||||
@@ -1590,12 +1595,15 @@ export class ParticleEmitter extends Container {
|
||||
? lerp(cfg.scaleYOverLifeMin, cfg.scaleYOverLifeMax, this.rng())
|
||||
: cfg.scaleYOverLifeMin
|
||||
p.resourceId = resource.id
|
||||
p.colorSample = resource.colorMode === 'random'
|
||||
? gradientColorAt(resource.colorGradient, seededUnit(cfg.seed, spawnSerial, 0x9e3779b9))
|
||||
: hexToNumber(resource.colorStart)
|
||||
const initialFrame = this.imageFrameState(resource, 0)
|
||||
p.imageFrameIndex = initialFrame.index
|
||||
p.sprite.texture = this.imageFrameTexture(resource, initialFrame.index)
|
||||
p.sprite.anchor.set(resource.anchorX, resource.anchorY)
|
||||
p.sprite.blendMode = BLEND_MAP[resource.blend] as any
|
||||
p.sprite.tint = hexToNumber(resource.colorStart)
|
||||
p.sprite.tint = p.colorSample
|
||||
p.sprite.visible = true
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user