프로세싱 마우스 이동제한
마우스 이동제한
물체가 마우스를 따라다니며
이 물체는 정해진 경계에서만 따라다니도록 한다.
스케치 소스
--------------------------------------------------------------
float mx;
float my;
float easing = 0.05;
int radius = 24; // 마우스를 따라다닐 원의 반지름
int edge = 56;
int inner = edge + radius;
void setup(){
size(480,320);
noStroke();
smooth();
ellipseMode(RADIUS);
rectMode(CORNERS);
}
void draw(){
background(255);
if(abs(mouseX-mx)>0.1){ // 마우스의 x위치와 mx값이 0.1이라도 차이가 있으면
mx = mx + (mouseX -mx)*easing; //mx값을 재계산 이전mx값에 (mouseX-mx)*0.05 값 만큼 보정
// 결국 mx값은 현재의 마우스 x좌표 값으로 수렴함.
// (mouseX-mx)차이가 클수록 빨리 수렴함.
}
if(abs(mouseY-my)>0.1){
my = my + (mouseY -my)*easing;
}
mx = constrain(mx,inner, width-inner); // mx 값을 아래 사각형 너비 값으로 제한
my = constrain(my,inner, height-inner); // my 값을 아래 사각형 높이 값으로 제한
fill(150);
rect(edge,edge,width-edge,height-edge);
fill(255);
ellipse(mx,my,radius,radius); // mx,my를 중점으로 24의 반지름을 갖는 원
}
-------------------------------------------------------------------------------------------
영상