본문 바로가기

코딩 공부/Unity C#

2D 물리학

inspector에서 add componet - rigidbody 2D 선택

옐로테디(게임 오브젝트)에 추가


Rigidbody 2D란?

Rigidbody 2D는 Unity의 2D 물리 엔진에서 객체에 물리적 동작을 적용하는 컴포넌트

 

 

  • 물리적 속성 부여
    • 객체가 중력에 의해 영향을 받게 하고, 충돌 시 반응하게 함
    • Unity의 2D 물리 시스템을 사용하여 자연스러운 움직임을 구현
  • 동적인 움직임 제어
    • 힘, 토크(회전력), 속도 등을 통해 객체의 동작을 조작할 수 있음
    • 물리 기반 움직임을 통해 실제처럼 보이는 상호작용을 만듦
  • 충돌 처리
    • 충돌 검사와 반응을 자동으로 처리
    • 다른 Collider 2D와의 상호작용을 관리

Rigidbody 2D의 주요 속성

Rigidbody 2D에는 여러 가지 속성이 있어, 객체의 물리적 특성을 제어할 수 있습니다. 여기 몇 가지 중요한 속성을 소개합니다:

  1. Mass (질량)
    • 객체의 질량을 정의합니다. 질량이 클수록 가속도가 줄어들고, 힘을 가했을 때 느리게 움직입니다.
    • 실제 물리 법칙에 따라 힘의 적용 시 더 많은 질량이 더 큰 저항을 발생시킵니다.
  2. Gravity Scale (중력 스케일)
    • 객체에 적용되는 중력의 크기를 조절합니다. 기본값은 1이며, 이를 변경하여 객체가 더 빨리 또는 더 천천히 떨어지게 할 수 있습니다.
    • 0으로 설정하면 중력의 영향을 받지 않습니다.
  3. Drag (공기 저항)
    • 객체의 선형 속도를 감속시키는 저항력입니다. 값이 높을수록 속도가 빨리 줄어듭니다.
    • 저항이 크면 객체가 빠르게 멈추고, 작으면 계속 움직이는 경향이 있습니다.
  4. Angular Drag (회전 저항)
    • 객체의 회전 속도를 감속시키는 저항력입니다. 값이 높을수록 회전이 빨리 멈춥니다.
    • 회전하는 물체가 느리게 회전하거나 멈추게 하고 싶을 때 사용합니다.
  5. Constraints (제약)
    • 객체의 특정 축의 움직임 또는 회전을 고정할 수 있습니다.
    • 예를 들어, X축 방향으로만 이동하게 하거나 회전을 제한할 수 있습니다.

스크립트 순서 정하기

 

- Move Down으로 컴포넌트의 순서를 조정할 수 있다.

개인의 취향이라고 설명하지만, 유지보수에 도움이 될 수도 있으니 참고하도록 하자.

 

곰돌이가 중력에 의해 아래로 떨어짐↓↓↓

- 게임을 실행하면 중력으로 인해 게임 오브젝트가 아래로 떨어진다

 

중력 설정

상단메뉴의 Edit - Project settings - Physics 2D

디폴트 설정

 

Script "Mover"로 오브젝트 이동시키기

rb2d.AddForce(new Vector2(1, 0), ForceMode2D.Impulse);

위(주석처리)아래 모두 동일하게 실행됨

 

- GetComponent는 게임 오브젝트에 붙어 있는 특정 컴포넌트를 가져오는 Unity의 메서드

- <> 안에 가져오고자 하는 컴포넌트의 타입을 지정합니다. 여기서는 Rigidbody2D 타입

- AddForce는 Rigidbody2D 컴포넌트에 특정 방향으로 힘을 가하는 메서드

- new Vector2(1, 0)는 X축 방향으로 1의 힘, Y축 방향으로 0의 힘을 의미

- ForceMode2D는 힘이 어떻게 적용될지를 결정하는 모드

 

  • ForceMode2D.Force: 힘을 일정 시간 동안 점진적으로 적용합니다.
  • ForceMode2D.Impulse: 순간적으로 강한 힘을 가합니다.

 

 

오른쪽으로 곰돌이가 이동 중→→→

 

 

'코딩 공부 > Unity C#' 카테고리의 다른 글

충돌 감지 -1-  (1) 2024.06.10
게임 오브젝트 이동하기  (0) 2024.06.10
테디(게임 오브젝트)크기 조절  (0) 2024.06.10
Unity 스크립트 디버깅  (0) 2024.06.09
컴포넌트로서의 스크립트  (0) 2024.06.06