GameMaker강좌[GM8]/기초강좌

[게임메이커강좌-기초] 마우스로 오브젝트를 드래그하여 이동하기

타락카얀 2016. 12. 2. 21:41
728x90



GAME MAKER 강좌



KAYAN








마우스로 오브젝트를 드래그하여 이동하기



이번 강좌에서는 마우스로 룸에 있는 오브젝트를 드래그하여 이동시키는 방법에 대해 알아보도록 해요.

일반적으로 마우스 좌표는,



mouse_x : 마우스 x 좌표
mouse_y : 마우스 y 좌표



위의 변수를 사용합니다.

참고로 멀티 포인트 터치 환경 이라면,



device_mouse_x(device) : 0 ~ 4 포인트 체크(스튜디오 이상 지원 함수)
device_mouse_y(device)



이 함수를 통해 세부적(최대 5 포인트 동시 체크)으로 체크할 수 있습니다만, 강좌에서는 간단하게

mouse_x, mouse_y를 사용해봅시다.

룸에 존재하는 오브젝트를 이동하기 위해서는, 오브젝트의 이동하기 전 좌표를 필요로 합니다.



(▲ 마우스 위치를 저장)


보통 아래와 같이, 오브젝트의 x, y를 마우스의 좌표에 맞추어 이동할 수도 있지만,



x=mouse_x;
y=mouse_y;



어느 위치를 클릭했든, 오브젝트의 x, y 좌표에 강제로 맞추기 때문에 불편한 장면이 연출되기도 합니다.
그래서 클릭한 위치를 유지하고, 이동하려면, 먼저 아래와 같이, 현재 오브젝트의 좌표에서 현재 마우스

좌표를 빼고,



prev_mouse_x=x-mouse_x;
prev_mouse_y=y-mouse_y;



그리고 그 차이를 이동할 때 더해주면,



x=mouse_x+prev_mouse_x;
y=mouse_y+prev_mouse_y;



클릭한 위치를 유지하고, 오브젝트를 마우스가 이동하는 곳으로 이동시킬 수 있습니다.
간단하죠.



(▲ 마우스 위치로 이동)


이벤트로 구성한다면,



★ Create 이벤트


drag_on=0;//마우스 이전 좌표 저장 스위치
prev_mouse_x=0;//마우스 이전 좌표
prev_mouse_y=0;


 

★ Step 이벤트


if mouse_check_button(mb_left){//마우스를 클릭 했을 때

if position_meeting(mouse_x,mouse_y,id) and drag_on=0{
//현재 오브젝트가 마우스 위치에 있다면,

prev_mouse_x=x-mouse_x;
prev_mouse_y=y-mouse_y;
drag_on=1;
}
//※ 오브젝트 좌표와 마우스 좌표의 차이를 1번만 저장하고,


if drag_on=1{
x=mouse_x+prev_mouse_x;
y=mouse_y+prev_mouse_y;
}
//이전 좌표의 차이를 현재 마우스 좌표에 더해 오브젝트의 위치를 갱신함

}
else{drag_on=0;}
//마우스를 클릭하지 않는다면, 기능을 다시 사용할 수 있도록 변수 리셋



위와 같이 구성할 수 있습니다.

마우스를 클릭하고, 현재 오브젝트가 마우스 포인트에 위치한다면, 현재 좌표와 마우스 좌표의 차이를

저장해둡니다. 그리고 오브젝트의 좌표는 마우스 현재 좌표에 이전에 저장해둔 값을 더해주면, 마우스

포인터 위치로 이동하게 됩니다.





drag_object_ex.gmk




300x250