유니티 로그라이크 02

유니티 로그라이크 02

Summary 플레이어 이동을 위한 Rigidbody2D 함수 설명과 FixedUpdate의 사용법을 다루며, 입력 벡터를 정규화하고 속도를 제어하는 방법을 설명합니다. GetAxis 대신 GetAxisRaw를 사용하여 반응성을 개선할 수 있습니다.


🎥 동영상 보기

Image

🔥 FixedUdate는 물리 연산 프레임마다 호출되는 함수다

🔥 Rigidbody2D 함수 설명 + 플레이어 이동 코드

 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
29
30
31
32
33
34
public class Player : MonoBehaviour
{
    public Vector2 inputVec;
    Rigidbody2D rigid;

    void Awake()
    {
        rigid = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        //input키에 Horizontal 은 [left, right] Vertical 은 [up, down] 키가 매핑되어있음
        inputVec.x = Input.GetAxis("Horizontal");
        inputVec.y = Input.GetAxis("Vertical");
    }

    //FixedUdate는 물리 연산 프레임마다 호출되는 함수다
**    void FixedUpdate() 
    {
        //1.힘을 준다
        rigid.AddForce(inputVec);

        //2.속도제어
        //Veclocity는 물리적인 속성을 뜻함 (속도를 인풋키로 직접 설정하겠다는 뜻)
        rigid.velocity = inputVec;

        //3.위치 이동
        //MovePostion은 위치 이동이라 현재 위치를 더해줘야함
        //이 코드에서 현재 위치는 rigid.postion 이다
        //인풋값과 현재위치를 더해주면 플레이어가 나아가야 할 방향을 계산한다
        rigid.MovePosition(rigid.position + inputVec);
    }**
}

🔥 근데 플레이어 속도가 너무 빨라서 다음과같이 벡터를 노말라이즈 해주고 델타타임을 곱해줘서 프레임 속도를 고정시켜줍니다

🔥 노말라이즈를 해주는 이유는 위 1 옆1 을 가더라도 대각선방향은 루트2 다 보니까 속도의 차가 생기니, 모든 방향의 값을 1로 고정시켜줍니다

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
//Player.cs

public float speed;

void FixedUpdate() 
    {

        //어느 방향이든 벡터값을 1로 고정
        **Vector2 nextVec = inputVec.normalized * speed * Time.deltaTime;**

        //위치 이동
        //MovePostion은 위치 이동이라 현재 위치를 더해줘야함
        //이 코드에서 현재 위치는 rigid.postion 이다
        //인풋값과 현재위치를 더해주면 플레이어가 나아가야 할 방향을 계산한다
        rigid.MovePosition(rigid.position + nextVec);
    }

🔥 근데 GetAxis특유의 늦은 반응과 슬라이스 이동이 거슬린다

GetAxis → GetAxisRaw 로 바꾸면 벡터값이 Impulse하게 작동됨 (점차 1까지 올라가는게 아니라 바로 1값을 때려박음)

1
2
inputVec.x = Input.**GetAxisRaw**("Horizontal");
inputVec.y = Input.**GetAxisRaw**("Vertical");

💬 댓글

GitHub 계정으로 로그인하여 댓글을 남겨보세요. GitHub 로그인

🔧 댓글 시스템 설정이 필요합니다

GitHub Discussions 기반 댓글 시스템을 활성화하려면:

  1. Giscus 설정 페이지에서 설정 생성
  2. GISCUS_SETUP_GUIDE.md 파일의 안내를 따라 설정 완료
  3. Repository의 Discussions 기능 활성화

Repository 관리자만 설정할 수 있습니다. 설정이 완료되면 모든 방문자가 댓글을 남길 수 있습니다.