motion_add 함수 설명 및 활용 예제
함수 설명
motion_add
함수는 주어진 방향으로 주어진 속도로 인스턴스를 가속화합니다. 이 함수는 주어진 방향에서의 속도의 x 성분과 y 성분을 계산한 후, 이를 각각 hspeed
와 vspeed
에 추가하는 것과 같습니다. 만약 점진적으로 가속하는 대신 단순히 속도를 설정하고 싶다면 motion_set()
함수를 사용하세요.
문법
motion_add(dir, speed);
인자 설명
인자 이름 | 타입 | 설명 |
---|---|---|
dir | Real | 추가할 방향 |
speed | Real | 추가할 속도 |
반환값
- 해당 없음
예제 코드
다음은 다른 객체와의 충돌 이벤트에서 호출되는 코드 예제입니다. 이 코드는 충돌에 관련된 다른 인스턴스의 위치와 속도를 기반으로 움직임의 방향과 속도를 추가합니다. 또한 속도가 8을 초과할 경우 이를 제한합니다.
var pdir;
pdir = point_direction(other.x, other.y, x, y);
motion_add(pdir, other.speed);
if speed > 8 speed = 8;
활용 예제
- 적 캐릭터의 추적: 적 캐릭터가 플레이어를 추적할 때, 플레이어의 위치를 기반으로 방향과 속도를 조정할 수 있습니다.
gml var target_dir; target_dir = point_direction(player.x, player.y, x, y); motion_add(target_dir, 5);
- 폭발 효과: 폭발이 발생할 때 주변 객체들이 폭발의 중심에서 멀어지도록 가속할 수 있습니다.
gml var explosion_dir; explosion_dir = point_direction(x, y, other.x, other.y); motion_add(explosion_dir, 10);
- 물체의 회피 행동: 적이 플레이어의 공격을 피할 때, 공격 방향의 반대 방향으로 가속할 수 있습니다.
gml var evade_dir; evade_dir = point_direction(x, y, player.x, player.y) + 180; // 반대 방향 motion_add(evade_dir, 3);
- 자동차 게임에서의 가속: 자동차가 도로를 따라 가속할 때, 도로의 방향에 맞춰 속도를 조정할 수 있습니다.
gml var road_dir; road_dir = get_road_direction(); // 도로의 방향을 가져오는 함수 motion_add(road_dir, 4);
- NPC의 랜덤 이동: NPC가 랜덤하게 움직일 때, 랜덤한 방향으로 가속할 수 있습니다.
gml var random_dir; random_dir = random(360); // 0에서 360도 사이의 랜덤 방향 motion_add(random_dir, 2);
이와 같은 다양한 활용 예제를 통해 motion_add
함수를 효과적으로 사용할 수 있습니다.