跳到主要内容

update 更新粒子的运动

update

类型: MethodDeclaration

所属类: ParticleElement

定义位置: animation.ts

描述

更新粒子的运动

参数 deltaTime: 增量时间(毫秒)

返回值:返回false表示粒子可以被回收

参数

参数名类型描述默认值
deltaTimenumber--

返回值

类型: boolean

返回false表示粒子可以被回收

源代码

位置: 第 2081 行

public update(deltaTime: number): boolean {
// 计算当前帧新的粒子位置
this.elapsed += deltaTime
this.scaleSpeed += this.scaleAccel * deltaTime
this.scaleFactor += this.scaleSpeed * deltaTime
this.rotationSpeed += this.rotationAccel * deltaTime
this.rotationAngle += this.rotationSpeed * deltaTime
this.movementSpeedX += this.movementAccelX * deltaTime
this.movementSpeedY += this.movementAccelY * deltaTime
this.anchorX += this.anchorSpeedX * deltaTime
this.anchorY += this.anchorSpeedY * deltaTime
this.x += this.movementSpeedX * deltaTime
this.y += this.movementSpeedY * deltaTime

// 计算水平旋转
this.hRotationExpansionSpeed += this.hRotationExpansionAccel * deltaTime
this.hRotationRadius += this.hRotationExpansionSpeed * deltaTime
this.hRotationAngularSpeed += this.hRotationAngularAccel * deltaTime
this.hRotationAngle += this.hRotationAngularSpeed * deltaTime
const hRotationOffset = this.hRotationRadius * Math.cos(this.hRotationAngle)
const hRotationOffsetX = hRotationOffset * Math.cos(this.globalAngle)
const hRotationOffsetY = hRotationOffset * Math.sin(this.globalAngle)
this.x += hRotationOffsetX - this.hRotationOffsetX
this.y += hRotationOffsetY - this.hRotationOffsetY
this.hRotationOffsetX = hRotationOffsetX
this.hRotationOffsetY = hRotationOffsetY

// 计算精灵帧
switch (this.spriteMode) {
case 'random':
break
case 'animation':
if (this.spriteFrame < this.spriteCount - 1 &&
(this.spriteElapsed += deltaTime) >= this.spriteInterval) {
this.spriteElapsed -= this.spriteInterval
this.spriteFrame++
this.updateSpriteFrame()
}
break
case 'animation-loop':
if ((this.spriteElapsed += deltaTime) >= this.spriteInterval) {
this.spriteElapsed -= this.spriteInterval
this.spriteFrame = (this.spriteFrame + 1) % this.spriteCount
this.updateSpriteFrame()
}
break
}

// 更新颜色
this.updateColor()

// 后期处理
return this.postProcessing()
}

文档生成时间:2025/7/7 12:07:06