void Update()
{
if (Input.GetKey(KeyCode.W))
transform.position += Vector3.forward * Time.deltaTime * _speed;
if (Input.GetKey(KeyCode.S))
transform.position += Vector3.back * Time.deltaTime * _speed;
if (Input.GetKey(KeyCode.A))
transform.position += Vector3.left * Time.deltaTime * _speed;
if (Input.GetKey(KeyCode.D))
transform.position += Vector3.right * Time.deltaTime * _speed;
}
요약: WASD 키로 캐릭터가 움직이도록 만드는 코드
단, 위와 같이 코드를 작성할 경우 position이 월드 좌표 기준이기 때문에 캐릭터의 rotate가 변경되면 어색하게 움직이게 된다
따라서 아래와 같은 함수들을 사용해야 한다
Local 좌표를 World 좌표로 변환
transform.TransformDirection()
World 좌표를 Local 좌표로 변환
transform.InverseTransformDirection()
void Update()
{
if (Input.GetKey(KeyCode.W))
transform.position += transform.TransformDirection(Vector3.forward * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.S))
transform.position += transform.TransformDirection(Vector3.back * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.A))
transform.position += transform.TransformDirection(Vector3.left * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.D))
transform.position += transform.TransformDirection(Vector3.right * Time.deltaTime * _speed);
}
따라서 캐릭터 상 forward, back, left, right 방향의 벡터를 월드 좌표계로 변환하여 transform.position을 변경해주면, local 좌표 기준으로 캐릭터가 움직이는 것을 확인할 수 있다
+ 또 다른 방법
transform.Translate () 함수 사용
void Update()
{
if (Input.GetKey(KeyCode.W))
transform.Translate(Vector3.forward * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.S))
transform.Translate(Vector3.back * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.A))
transform.Translate(Vector3.left * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.D))
transform.Translate(Vector3.right * Time.deltaTime * _speed);
}
해당 함수는 기본적으로 Local 좌표계를 기준으로 삼기 때문에 좌표계를 변환하지 않고도 사용이 가능하다
'강의, 책 > [Unity] C#과 유니티로 만드는 MMORPG 게임 개발 시리즈' 카테고리의 다른 글
Section 3. Prefab - Resource Manager (0) | 2024.01.20 |
---|---|
Section 2. Transfrom - Input Manager (0) | 2024.01.16 |
Section 2. Transform - Rotate (0) | 2024.01.16 |
Section 2. Transform - Vector3 (0) | 2024.01.16 |
Section 1. 유니티 기초 - 매니저 만들기, 싱글톤 패턴 (0) | 2024.01.16 |