인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

박건원님의 프로필 이미지
박건원

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Rotation

Slerp궁금증입니

작성

·

526

0

if (Input.GetKey(KeyCode.W))

{

transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.forward), rotateSpeed);

transform.position += Vector3.forward Time.deltaTime speed;

}

if (Input.GetKey(KeyCode.A))

{

transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.left), rotateSpeed);

transform.position += Vector3.left Time.deltaTime speed;

}

if (Input.GetKey(KeyCode.S))

{

transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.back), rotateSpeed);

transform.position += Vector3.back Time.deltaTime speed;

}

if (Input.GetKey(KeyCode.D))

{

transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.right), rotateSpeed);

transform.position += Vector3.right Time.deltaTime speed;

}

이런식으로 하고 rotateSpeed를 1.0f로 한뒤 유니티에서 a를 살짝 눌렀는데 90도만큼 회전하지 않아서 왜 그런지 궁금합니다

 

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

제 코드를 보니, 굳이 Slerp가 필요한 상황이 아닌 것 같습니다. Slerp는 회전에 대해서 보간(interpolation)을 해주는 함수인데, transform.LookRotation으로 구한 방향 벡터는 보간이 필요하지 않은 값입니다. 따라서, 아래와 같이 코드를 수정하시면 될 것 같아요.

if (Input.GetKey(KeyCode.W))
{
transform.rotation = Quaternion.LookRotation(Vector3.forward);
transform.position += Vector3.forward * Time.deltaTime * speed;
}
if (Input.GetKey(KeyCode.A))
{
transform.rotation = Quaternion.LookRotation(Vector3.left);
transform.position += Vector3.left * Time.deltaTime * speed;
}
if (Input.GetKey(KeyCode.S))
{
transform.rotation = Quaternion.LookRotation(Vector3.back);
transform.position += Vector3.back * Time.deltaTime * speed;
}
if (Input.GetKey(KeyCode.D))
{
transform.rotation = Quaternion.LookRotation(Vector3.right);
transform.position += Vector3.right * Time.deltaTime * speed;
}

위의 코드로 수정하신 뒤 시도해보시면 어떨까요? 추가적으로, rotateSpeed의 값이 작으면 작을수록 부드러운 회전이 이루어집니다. 따라서, 필요에 따라 rotateSpeed의 값을 조절해보시기를 추천드려요.

코드 해설이나 기타 궁금한 점이 있다면 언제든지 물어보세요. 감사합니다.

박건원님의 프로필 이미지
박건원

작성한 질문수

질문하기