🎮캐릭터 회전

⚙️Torque

플레이어 오브젝트의 Transform Rotation 값을 수정하지 않고 Torque라는 힘을 이용해 플레이어를 회전시켜보자.

Torque를 사용하기 위해 Rigidbody2D에 접근해야 한다. Rigidbody2D 타입의 멤벼변수를 만들고 AddTorque() 메서드를 사용해서 플레이어를 회전시킬 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    [SerializeField] float torqueAmount = 1f;
    Rigidbody2D rb2d;

    // Start is called before the first frame update
    void Start()
    {
        rb2d = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKey(KeyCode.LeftArrow))
        {
            rb2d.AddTorque(torqueAmount);
        }
        else if(Input.GetKey(KeyCode.RightArrow))
        {
            rb2d.AddTorque(-torqueAmount);
        }
    }
}

스크립트를 플레이어 오브젝트에 추가하고 프로젝트를 실행시켜 보면 정상적으로 플레이어 회전하는 것을 볼 수 있다.

하지만 방향키를 눌렀다가 떼도 플레이어가 계속 회전하는 문제가 있다. 플레이어의 Rigidbody 2D 컴포넌트를 보면 Angular Drag와 Linear Drag라는 것들이 있다.

  • Angular Drag: 회전 할 때 얼마나 마찰을 줄 것인지와 관련됨
  • Linear Drag: 앞으로 가거나 뒤로 갈 때 얼마나 마찰을 줄 것인지와 관련됨

Angular Drag 값을 알맞게 조절하면 플레이어가 계속 회전하지 않을 것이다.



Leave a comment