이것을 기반으로 바퀴벌레 잡기 게임을 만들었습니다.
각각의 객체에 enterFrame이벤트가 먹히도록 해 주면 됩니다.
불규칙적인 타이밍으로 타겟을 바꿔주고 그 타겟을 향해 부드러운 움직임을 줍니다.
소스코드
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);
}
'FLASH > AS3.0팁' 카테고리의 다른 글
게임프레임웍기본형(절차적방식, 클래스방식) (0) | 2015.06.10 |
---|---|
중력가속도 구현해 보자 (0) | 2015.06.10 |
마우스이벤트 종합 예제 (0) | 2015.06.10 |
등속운동 구현방법입니다. (0) | 2015.06.10 |
[AS3] 두 점간 거리 구하기 (0) | 2015.06.10 |
마우스 트레일러 만들기 (0) | 2015.06.10 |
휠마우스로 원형메뉴 돌리기 (0) | 2015.06.10 |
삼각함수로 다각형 그리기 (0) | 2015.06.10 |
삼각함수를 이용한 단진동 (0) | 2015.06.10 |
마우스 따라 회전하는 무비클립 (0) | 2015.06.10 |