四角形をバラバラに飛び散らせる(パーティクル)

動作バージョン
2.0
Windows
Macintosh

解  説
四角形を作成し選択します。選択された四角形の大きさに合わせて指定された分割サイズで四角形を個別に分割します。分割した四角形を指定された秒数だけランダムな方向に飛び散ります。

コード

// 分割サイズ、作成フレーム数
Particle1(
10,60);

function Particle1(step,lastFrames)
{
var i,j;
var obj = application.currentComposition.selection[0];
var w = obj.size.x;
var h = obj.size.y;
var x = obj.position.x;
var y = obj.position.y;
var sx = x - obj.anchorPoint.x;
var sy = y - obj.anchorPoint.y;
var dw = w % step;
var dh = h % step;
for(j=0; j<h-step; j+=step)
{
for(i=0; i<w-step; i+=step) makeObj(sx+i,sy+j,step,step);
if (dw) makeObj(sx+i,sy+j,dw,step);
Console.write("Separate:"+j+"\n");
}
if (dh)
{
for(i=0; i<w-step; i+=step) makeObj(sx+i,sy+j,step,dh);
if (dw) makeObj(sx+i,sy+j,dw,dh);
}
makeParticle(lastFrames);
}

function makeObj(mx,my,mw,mh)
{
var Comp = application.currentComposition;
var myObj = Comp.createObject(LMGeometricType.rectangle,mx,my);
myObj.size.x = mw;
myObj.size.y = mh;
myObj.anchorPoint.x = 0;
myObj.anchorPoint.y = 0;
}

function makeParticle(lastSec)
{
var px,py,i;
var Comp = application.currentComposition;
var cx = Comp.size.x;
var cy = Comp.size.y;
for (i=0; i< Comp.objects.length; i++)
{
Comp.objects[i].stopwatch.position = true;
Comp.objects[i].startFrame = 0;
Comp.objects[i].currentFrame = 0;
Comp.objects[i].position.x = Comp.objects[i].position.x;
Comp.objects[i].position.y = Comp.objects[i].position.y;
Comp.objects[i].endFrame = lastSec;
Comp.objects[i].currentFrame = lastSec;
px = (Math.random() * cx*3) - cx;
py = (Math.random() * cy*3) - cy;
Comp.objects[i].position.x = px;
Comp.objects[i].position.y = py;

Console.write("Make No:"+i+"\n");
}
}


■サンプルスクリプトをダウンロードする >>.zip

■サンプルの実行結果を見る >>実行