본문 바로가기
GameMaker강좌[GM8]/기초강좌

[게임메이커강좌-기초]기본 이동대하여

by 타락카얀 2013. 2. 8.
728x90




◈간단한 이동



이동하기에는 여러가지 방법이 있습니다.

이것은 오브젝트의 이벤트를 통하여 설정합니다.

x,y값에 이동속도만큼 더하면서 이동하는 방법으로

이동할 값을 m이라 할 때,

x+=m, 또는 y+=m으로 이동할 수 있습니다.

예를 들면,



 
    x+=5;//x방향으로 +5만큼 이동함

     y+=5;//y방향으로 +5만큼 이동함



이렇게 (x,y)좌표를 직접 제어하여 이동시킬 수 있습니다.

(하지만, x=m 또는 x=+m은 룸의 해당 위치로 이동하게 됩니다)



(▲ X축 좌표와 Y축 좌표를 제어하여 이동)


또는, hspeedvspeed 값을 통해 수평이나 수직방향으로 이동시킬 수 있습니다.


(▲ hspeed 는 수평 방향, vspeed 는 수직 방향)


이동할 속도를 m이라 할때,

hpseed=m, 또는 vspeed=m 으로 할 수 있습니다.

예를 들면,



 
    hspeed=5;//수평방향 +5만큼 이동함
     vspeed=5;//수직방향 +5만큼 이동함


를 사용하여 이동 시킬 수도 있습니다.

주의하실것은 속도에 해당하는 hspeed 나 vspeed를 0으로 해주지 않으면 계속 이동하게 됩니다.

(정지할때는 speed=0;으로 해도 정지합니다)


그리고,



 
    direction=180;//방향을 180방향으로
     speed=5;//속도는 5정도로 이동함


이렇게 방향(direction)과 속도(speed)를 주어 이동시킬 수도 있습니다.


(▲ direction)


위와 같이 speed 값으로 이동할 때 정지하려면 speed를 0으로 해주어야 정지합니다.



(▲ direction 방향으로 지정한 speed 값 속도만큼 이동)


direction speed 값으로 이동하는 기능은  motion_set(방향,속도), motion_add(방향,속도) 함수를 사용해도

같은 효과를 볼 수 있습니다.



 
    motion_set(270,5);//270방향으로 5속도로 이동
     motion_add(270,5);//270방향으로 5속도씩 점점 가속하며 이동


이렇게 할 수도 있지요.








◈간단한 이동 제한



이동에 대해 간단하게 알아보았으니, 이동을 제한하는 방법에 대해 알아봅시다.


이동을 제한시키는 방법은 여러가지 있습니다.
첫번째로 조건문을 걸어 이동을 제한시키는 방법이있습니다.



 
    if x>0 {x-=1;}


이런 경우 x가 0보다 클 때 x의 값을 -1만큼 계속 차감하게 됩니다.


또는



 
    x-=1;
     x=max(0,x);


이렇게 할수도 있지요.

x,y값을 룸밖으로 나가지 않게 하는 경우,



 
    if x<0{x=0;}
     if y<0{y=0;}
     if x>room_width{x=room_width;}
     if y>room_height{x=room_height;}


End Step에 넣으면 룸 밖으로 나가지 않게 됩니다.


또는



 
    x=max(0,min(x,room_width));
     y=max(0,min(y,room_width));


이런 식으로 간단하게 할 수도 있습니다.






◈제한 범위를 두고 이동 제한



제한 범위를 두고 이동을 멈출 수 있는데
그것에 대한 방법을 알아봅시다.



 
    point_direction(x1,y1,x2,y2);//(x1,y1)에서 (x2,y2)로의 방향
     point_distance(x1,y1,x2,y2);//(x1,y1)과 (x2,y2)의 거리


방법에 따라 위와 같은 기능을 사용할 수 있어요.



예를 들어



 
    direction=point_direction(x,y,320,240);
     speed=2;


이렇게 하면 (320,240)지점으로 2속도만큼 이동하겠지요.

여기서 어느정도의 거리가 되었을 때 멈춰봅시다.



 
    if point_distance(x,y,320,240)<64{speed=0;}


이렇게 하면 (320,240)지점까지의 거리가 64정도 되었을 때 속도가 0이 되어 멈추게 됩니다.



300x250

댓글