본문 바로가기

Random Thoughts/Coding Tips

마우스를 피하는 물체를 만들어보자!

simple avoiding algorithm.
특정한 부분에 머물면서 마우스를 피하는 물체를 만들어 보자.



import flash.events.Event;

import flash.display.Sprite;

const thres:Number=100

var apple:Sprite=new Sprite();
apple.graphics.beginFill(0);
apple.graphics.drawCircle(0,0,25);
//apple.graphics.drawRect(-25,-25,50,50);
addChild(apple);

addEventListener(Event.ENTER_FRAME,ef);

function ef(e:Event):void{
var nx:Number
var ny:Number
var dx:Number
var dy:Number
nx=(275+apple.x*2)/3
ny=(200+apple.y*2)/3
dx=nx-mouseX
dy=ny-mouseY
var d:Number
if(dx==0 && dy==0){
dx=1
}
d=Math.sqrt(dx*dx+dy*dy);
//d=(Math.abs(dx-dy)+Math.abs(dx+dy))*.707   //물체의 모양에 따라 거리를 다르게 계산해 주자. 
if(d<thres){
d=thres/d
nx=dx*d+mouseX
ny=dy*d+mouseY
}
apple.x=nx
apple.y=ny;
}


물체를 일단 끌고온 다음 마우스로부터 떨어뜨려 놓는거죠 설명해드리자면

import flash.events.Event;
import flash.display.Sprite;

const thres:Number=100 << 당신이 원하는 거리입니다.

var apple:Sprite=new Sprite();
apple.graphics.beginFill(0);
apple.graphics.drawCircle(0,0,25);
//apple.graphics.drawRect(-25,-25,50,50);
addChild(apple);

addEventListener(Event.ENTER_FRAME,ef);

function ef(e:Event):void{
var nx:Number
var ny:Number
var dx:Number
var dy:Number
nx=(275+apple.x*2)/3
ny=(200+apple.y*2)/3 <<물체를 275, 200으로 끌고 옵니다.
dx=nx-mouseX
dy=ny-mouseY
var d:Number
if(dx==0 && dy==0){
dx=1
} << 거리가 0이면 물체를 이동시킬 방향을 따로 정해줍니다.
d=Math.sqrt(dx*dx+dy*dy); //거리를 계산합니다.
//d=(Math.abs(dx-dy)+Math.abs(dx+dy))*.707   //물체의 모양에 따라 거리를 다르게 계산해 주자. 
if(d<thres){ //그리고 일정 거리 이하이면 일정 거리가 되도록 중심에서 다시 떨어뜨립니다.
d=thres/d
nx=dx*d+mouseX
ny=dy*d+mouseY
}
apple.x=nx
apple.y=ny;
}