속도
Coddy Unity 여정의 물리와 게임플레이 섹션에 포함된 레슨. 63개 중 5번째.
rb.linearVelocity는 물체가 지금 어떻게 움직이고 있는지를 나타냅니다. x, y, z 방향의 초당 미터 단위 Vector3입니다. 이 값을 읽으면 물체가 어느 방향으로 움직이는지 알 수 있고, rb.linearVelocity.magnitude는 물체의 속력입니다. 이 값을 설정하면 가속 과정 없이, 질량과 관계없이 즉시 움직임이 바뀝니다. 1 kg 상자와 50 kg 금고를 모두 2 m/s로 설정하면 다음 물리 업데이트부터 정확히 2 m/s로 움직입니다. 이후에도 중력, 마찰, 충돌의 영향은 계속 받습니다.
이 고카트는 정확히 cruise m/s의 속도로 앞으로 달립니다. 속도를 복사한 뒤 z만 바꾸고 다시 할당하므로, 중력으로 인해 생긴 y 값은 유지되고 카트는 경사로 끝에서 계속 떨어집니다.
void FixedUpdate()
{
Vector3 vel = rb.linearVelocity;
vel.z = cruise; // 정확히 cruise m/s의 속도로 전진
rb.linearVelocity = vel; // y는 중력에 의해 결정된 값을 유지
}y도 0으로 설정하면 매 단계마다 중력이 만든 속도가 사라져서, 카트는 떨어지는 대신 경사로에서 천천히 아래로 내려갑니다. Unity 6 이전에는 이 속성의 이름이 velocity였습니다. 예전 튜토리얼에는 여전히 rb.velocity라고 쓰여 있습니다. Unity 6에서는 컴파일되지만, velocity가 더 이상 사용되지 않으며 linearVelocity로 이름이 바뀌었다는 경고가 표시됩니다. 같은 방식으로 drag는 linearDamping이 되었습니다. 새 이름을 사용하세요.
챌린지
쉬움로봇은 높은 플랫폼 위를 걷습니다. 화살표 키를 눌러 로봇이 정확히 speed m/s(Inspector에서 3)의 속도로 걷게 하세요. 왼쪽과 오른쪽은 x축을 따라, 위쪽과 아래쪽은 z축을 따라 움직이며, 감속 효과가 없도록 원시 축 값을 사용하세요.
- 화살표 키를 누르지 않으면 로봇은 즉시 멈춰 서 있습니다.
- 중력은 계속 작동합니다. 가장자리 밖으로 걸어 나가면 로봇은 아래 지면으로 떨어집니다.
재생을 누르고 로봇을 가장자리 밖으로 걸어 나가게 한 다음, 확인을 누르세요.
직접 해보기
using UnityEngine;
public class RobotWalk : MonoBehaviour
{
public float speed = 3f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// 중력에 의한 y값을 유지하면서 방향키로 정확히 speed의 속도로 이동
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.