마찰 (Friction) 설명서
개요
마찰(Friction)은 인스턴스가 가질 수 있는 내장 속성 중 하나로, 인스턴스의 속도가 0이 아닐 때, 시간이 지남에 따라 인스턴스를 감속시키는 데 사용됩니다. 마찰은 매 스텝마다 속도에서 일정량을 빼는 방식으로 작동합니다. 즉, 마찰이 0.1로 설정되고 인스턴스 속도가 1(1픽셀/스텝)인 경우, 10 스텝 후에 멈추게 됩니다.
마찰은 양수 및 음수 속도에 동일하게 적용되며, 주어진 시간 후에 항상 물체의 속도가 0이 됩니다.
문법
friction;
반환 값
- 단일 정밀도 부동 소수점 값 (single precision floating point value)
예제
if (abs(speed) > 0) {
friction = 0.05;
} else {
friction = 0;
}
위 코드는 인스턴스의 절대 속도가 0보다 클 때만 마찰을 적용합니다.
마찰 사용 예시
| 예제 | 설명 |
|---|---|
| 1 | 속도를 점차 줄이는 간단한 오브젝트 설정. |
| 2 | 플레이어가 벽에 부딪혔을 때 부드럽게 멈추게 하기. |
| 3 | 시간에 따라 마찰력을 변동시켜 더 자연스러운 물리적 움직임 구현. |
| 4 | 특정 지역에서 마찰력을 증가시키는 환경 효과. |
응용 예제
1. 인스턴스 감속
// 인스턴스가 움직일 때마다 마찰을 적용하여 감속
if (abs(speed) > 0) {
friction = 0.1;
}
이 코드는 인스턴스의 속도가 있을 때, 매 스텝마다 속도를 줄이게 됩니다.
2. 충돌 시 마찰 적용
// 벽에 부딪힐 때 마찰력을 크게 설정하여 빠른 감속
if (place_meeting(x, y, obj_wall) && speed > 0) {
friction = 0.2;
}
이 코드는 인스턴스가 벽에 부딪혔을 경우 마찰력을 높여 순간적으로 빠르게 멈추게 하는 예입니다.
3. 변동 마찰
// 게임 속도에 따라 마찰력을 동적으로 변화시키기
friction = speed / 100;
속도를 기반으로 마찰력을 조정하여 더 자연스러운 움직임을 얻을 수 있습니다.
4. 지역별 마찰 설정
// 특정 지역에서 마찰력을 증가시켜 환경 효과 구현
if (in_area) {
friction = 0.15;
}
특정 지역에 들어갔을 때 마찰력을 증가시켜 더 느리게 움직이게 하는 예시입니다.
위의 예제들은 마찰을 활용하여 인스턴스의 속도를 조절하고, 다양한 게임 메커니즘을 구현하는 방법을 보여줍니다. 필요에 맞게 조정하여 사용할 수 있습니다.