본문 바로가기
TIL

01.02 (TIL-Unity)

by 오랑이귀엽다 2024. 1. 2.

Rigidbody2D 컴포넌트의 velocity 속성(점프관련)

초기코드

더보기

    private void Update()
    {
        // 매 프레임마다 지면에 있는지 확인
        isGrounded = CheckIfGrounded();
    }

    private void FixedUpdate()
    {
        // 물리 업데이트에서 이동 적용
        ApplyMovement(_movementDirection);
    }

    private void Jump()
    {
        // 지면에 있을 때만 점프 실행
        if (isGrounded)
        {
            Debug.Log("Jumping");
            _rigidbody.velocity = new Vector2(_rigidbody.velocity.x, jumpForce);
        }
    }
     private void ApplyMovement(Vector2 direction)
    {
        // 이 코드는 원래 수직 속도(y)를 무시하고, direction.x만을 적용합니다.
        _rigidbody.velocity = new Vector2(direction.x, 0);
    }

}

velocity 속성은 물체의 속도를 나타내며, x (수평)와 y (수직) 두 방향 모두에 대한 값을 가진다.

Unity의 물리 엔진은 이 값을 사용하여 각 프레임마다 물체의 위치를 업데이트

 

중요한 부분은 velocityy 성분, 즉 수직 속도

점프는 y 방향의 속도를 증가시켜 캐릭터가 위로 움직이게 함으로써 구현

초기 코드에서는 ApplyMovement 메서드에서 Rigidbody2Dvelocity를 설정할 때 수평 방향만 고려, 수직 속도는 무시

즉, 점프를 하고자 할 때 수직 속도를 설정해도, 이동 로직이 실행될 때마다 이 수직 속도가 무시되고 다시 0으로 설정

 

해결책은 ApplyMovement 메서드 내에서 Rigidbody2D의 현재 velocity.y 값을 유지하는 것

해결코드

더보기

private void ApplyMovement(Vector2 direction)
{
    // 이 코드는 현재 수직 속도(y)를 유지합니다.
    _rigidbody.velocity = new Vector2(direction.x, _rigidbody.velocity.y);
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'TIL' 카테고리의 다른 글

01.04 (TIL-Unity)  (0) 2024.01.04
01.03 (TIL-Unity)  (2) 2024.01.03
12.29 (TIL-Unity3D)  (0) 2024.01.02
12.28 (TIL-Unity3D)  (1) 2023.12.28
12.27 (TIL-Unity3D)  (0) 2023.12.27