パーティクルを開始位置に戻すための大まかなコード スニペットを次に示します。
各粒子の初期位置を保存します。
this.initialX;
this.initialY;
// and in setPos
this.initialX=x;
this.initialY=y;
パーティクルが最初から移動できる最大移動距離を設定します。
// let the particle get 100px from initial before starting its return
this.maxTravel=100;
移動中に、パーティクルが initialXY から指定された距離にあるかどうかを確認します。
var dx = p.x-p.initialX;
var dy = p.y-p.initialY;
if( dx*dx+dy*dy > this.maxTravel*this.maxTravel )
その場合は、新しいアニメーション フレームごとにパーシャルを initialXY に戻し始めます。
パーティクルを初期位置に戻すためのコード スニップを次に示します。
// In particle definition: track % progress in returing to initial
this.returnToInitialPercentage=100;
// In update: bring particle 1% closer to initialXY
p.returnToInitialPercentage-=1;
if(p.returnToInitialPercentage>0){
returnParticleToInitial(p,returnToInitialPercentage)
}
//
function returnParticleToInitial(p,percent) {
var dx = p.x-p.initialX;
var dy = p.y-p.initialY;
percent/=100;
p.x = p.initialX + dx*percent;
p.y = p.initialY + dy*percent;
}
「組み立てが必要です!」: 繰り返しますが、これらは大まかな切り取りです。正確なニーズに合わせて調整してください。