본문 바로가기
아두이노_프로세싱/프로세싱

프로세싱 마우스 이동제한

by 돌돌쌤 2012. 7. 28.

마우스 이동제한


물체가 마우스를 따라다니며

이 물체는 정해진 경계에서만 따라다니도록 한다.


스케치 소스

--------------------------------------------------------------

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의 반지름을 갖는 원

-------------------------------------------------------------------------------------------


영상