본문 바로가기

FLASH/AS3.0팁

단체로 브라운운동 + 방향전환

이것을 기반으로 바퀴벌레 잡기 게임을 만들었습니다.

각각의 객체에 enterFrame이벤트가 먹히도록 해 주면 됩니다.

불규칙적인 타이밍으로 타겟을 바꿔주고 그 타겟을 향해 부드러운 움직임을 줍니다.



4_ 브라운운동_방향전환3.fla



 

소스코드

 

var speedRate:Number = 0.1;

var mcCnt:int=10;

//var tx:Number = Math.random()*stage.stageWidth;

//var ty:Number = Math.random()*stage.stageHeight;

var mc:MC_c;

for(var i:int=0; i<mcCnt; i++){

 mc = new MC_c();

 mc.name = "mc"+i;

 mc.tf.text = "mc"+i;

 addChild(mc); 

 mc.x = Math.random()*650-50;

 mc.y = Math.random()*500-50;

 mc.addEventListener(Event.ENTER_FRAME, onEnter);

}

function onEnter(e){

 var mc:MovieClip = e.currentTarget as MovieClip;

 var num:Number = Number(e.currentTarget.name.substr(-1));

 if(Math.random() < 0.05){

  mc.tx = Math.random()*550; //mc라는 변수의 속성값으로 tx를 넣으면 별도로 var로 선언하지 않아도 된다.

  mc.ty = Math.random()*400;

 }

 smoothMove(mc, 0.15, mc.tx, mc.ty);

 rotateTo(mc, mc.tx, mc.ty);  

}

//방향전환 함수

function rotateTo(kmc:MovieClip, ktx:Number, kty:Number){

 var dx = ktx-kmc.x;

 var dy = kty-kmc.y;

 kmc.rotation = Math.atan2(dy, dx)*180/Math.PI;

}

//부드러운 움직임 함수

function smoothMove(kmc:MovieClip, kspeedRate:Number, ktx:Number, kty:Number){

 kmc.x = kmc.x + kspeedRate*(ktx - kmc.x);

 kmc.y = kmc.y + kspeedRate*(kty - kmc.y);

}