본문 바로가기

코딩 공부/Unity C#

게임 오브젝트 이동하기

문제 1 - 물리가 있는 게임 오브젝트 추가하기

1. Exercise12라는 이름의 새 2D Unity 프로젝트를 생성합니다. SampleScene의 이름을 Scene0으로 바꿉니다. 새 Sprites 폴더를 추가하고 OS를 사용하여 선택한 스프라이트를 해당 폴더에 복사합니다. 스프라이트를 계층 구조 창으로 드래그하여 씬에 게임 오브젝트를 생성합니다. 게임을 실행하고 아무 일도 일어나지 않는지 확인합니다.

2. 리지드바디 2D 컴포넌트를 게임 오브젝트에 추가합니다. 이렇게 하려면 계층 구조 창에서 게임 오브젝트를 마우스 왼쪽 버튼으로 클릭하고 인스펙터 하단에 있는 컴포넌트 추가 버튼을 클릭한 다음 물리 2D > 리지드바디 2D를 선택합니다.

3. 게임을 실행합니다. 게임 오브젝트가 게임 뷰에서 아래로 내려가야 합니다.

4. 메인 메뉴 표시줄에서 편집 > 프로젝트 설정 > 물리 2D를 선택하고 중력의 Y 컴포넌트를 0으로 설정하여 게임에서 중력을 제거합니다. 게임을 실행하고 다시 아무 일도 일어나지 않는지 확인합니다.

문제 2 - 게임 오브젝트 이동

1. 새 스크립트 폴더를 생성하고 해당 폴더에 Mover라는 새 C# 스크립트를 생성합니다. Visual Studio에서 새 스크립트를 열고 클래스에 대한 문서 주석을 추가합니다.

2. Update 메서드를 삭제하고 Start 메서드에 다음 코드를 추가합니다(아래 빈 줄은 추가하지 마세요):

// get the game object moving

GetComponent<Rigidbody2D>().AddForce(

new Vector2(0, 5),

ForceMode2D.Impulse);

GetComponent 메서드의 기능, AddForce 메서드의 기능, new Vector2(0, 5) 코드의 기능, ForceMode2D.Impulse 인수의 작동 방식을 이해했는지 확인하세요. 이를 파악하려면 Unity 스크립팅 레퍼런스를 읽어야 하지만 모든 부분을 이해했는지 확인하세요.

>>>GetComponent로 Rigidboby2D 컴포넌트를 가져와서 y축으로 5만큼 이동시킨다 

 

3. 게임을 실행하고 아무 일도 일어나지 않으니 욕을 해보세요. 무버 스크립트를 게임 오브젝트에 첨부합니다.

4. 게임을 실행하고 게임 패널에서 게임 오브젝트가 위로 이동하는 것을 확인합니다.

문제 3 - 힘으로 플레이하기

힘 벡터의 값을 가지고 다양한 방식으로 게임 개체를 움직여 보세요.

 

위로 올라가는 오브젝트와 콘솔의 욕

 

    void Start()
    {
        // get the game object moving

        GetComponent<Rigidbody2D>().AddForce(new Vector2(5, 5), ForceMode2D.Force);

        Debug.Log("eww");
    }

 

 

여러 가지로 이동시키기

- ForceMode2D.Force를 사용하면 Impulse에 비해 이동속도가 느리다

- x축 y축을 동시에 이동시키면new Vector2D (5, 5) 대각선으로 이동

 


오브젝트를 이동시킬 수 있는 다양한 방법들

 

  • AddForce:
    • 물리적인 힘을 적용하여 자연스러운 물리적 반응을 얻을 때 유용합니다.
    • 물리 엔진을 사용하여 힘, 질량, 마찰 등을 고려하는 게임플레이에 적합합니다.
  • Transform:
    • 직접적인 위치 변경이 필요할 때 사용합니다.
    • 물리적 상호작용이 필요 없는 경우에 적합합니다.
  • Rigidbody2D.velocity:
    • 물체의 속도를 직접 제어할 때 유용합니다.
    • 일관된 이동 속도가 필요한 경우에 사용됩니다.
  • Rigidbody2D.MovePosition:
    • 물리적 충돌과 상호작용을 유지하면서 물체를 이동시킬 때 적합합니다.
  • CharacterController:
    • 주로 3D 게임에서 캐릭터의 이동을 제어할 때 사용됩니다.
    • 물리 엔진을 사용하지 않고도 캐릭터의 이동과 충돌을 관리할 수 있습니다.

 

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

충돌 감지 -2-  (0) 2024.06.13
충돌 감지 -1-  (1) 2024.06.10
2D 물리학  (0) 2024.06.10
테디(게임 오브젝트)크기 조절  (0) 2024.06.10
Unity 스크립트 디버깅  (0) 2024.06.09