◈간단한 이동
이동하기에는 여러가지 방법이 있습니다.
이것은 오브젝트의 이벤트를 통하여 설정합니다.
x,y값에 이동속도만큼 더하면서 이동하는 방법으로
이동할 값을 m이라 할 때,
x+=m, 또는 y+=m으로 이동할 수 있습니다.
예를 들면,
x+=5;//x방향으로 +5만큼 이동함 y+=5;//y방향으로 +5만큼 이동함 |
이렇게 (x,y)좌표를 직접 제어하여 이동시킬 수 있습니다.
(하지만, x=m 또는 x=+m은 룸의 해당 위치로 이동하게 됩니다)
(▲ X축 좌표와 Y축 좌표를 제어하여 이동)
또는, hspeed 와 vspeed 값을 통해 수평이나 수직방향으로 이동시킬 수 있습니다.
(▲ 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 값으로 이동할 때 정지하려면 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-=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;} |
또는
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; |
여기서 어느정도의 거리가 되었을 때 멈춰봅시다.
if point_distance(x,y,320,240)<64{speed=0;} |
'GameMaker강좌[GM8] > 기초강좌' 카테고리의 다른 글
[게임메이커강좌-기초]스프라이트(sprite)및 마스크(mask) (4) | 2013.04.13 |
---|---|
[게임메이커강좌-기초]오브젝트(object)와 인스턴스(instance) (9) | 2013.04.05 |
[게임메이커강좌-기초]좌표와 방향 (3) | 2013.02.06 |
[게임메이커강좌-기초]리소스 구성 (1) | 2013.02.04 |
[게임메이커강좌-기초]게임메이커에 대해 (11) | 2013.02.04 |
댓글