본문 바로가기
카테고리 없음

C#을 이용하여 오브젝트에 움직임을 주기

by Creative Developer 2023. 2. 20.

서론

유니티 엔진은 기본적으로 C#을 스크립트 언어로 채택하고 있습니다. C# 코드를 이용하여 게임 내의 오브젝트에 다양한 움직임을 줄 수 있습니다. 게임에서 사용되는 C#의 기본적인 문법에 대해서 알아보겠습니다.

 

 

작업 순서

1. 유니티 허브를 실행시킨 후에 지난 강의에서 만든 'MyUnityGame' 프로젝트를 열어줍니다.

2. Assets 폴더 안에 있는 Scripts 폴더로 들어가서 마우스 우클릭한 후에 Create 메뉴 안의 C# Script를 클릭한 후에 파일명을 Player라는 이름으로 입력하여 Player에 움직임을 주기 위한 Script 파일을 생성해줍니다.

3. Player Script 파일을 더블 클릭하면 자동으로 Visual Studio가 실행되면서 Player Script 파일이 열리게 됩니다.

4. void Start() 함수 바로 위에 public float speed; 를 입력합니다. public은 모든 곳에서 이 변수에 접근할 수 있다는 뜻이고, float은 소수형의 변수를 사용한다는 뜻이고, speed는 변수명입니다.
5. 그리고 다음 줄에 private Rigidbody rb; 라고 입력합니다. private 은 다른 외부 코드에서 접근할 수 없다는 뜻이고, Rigidbody 컴포넌트를 rb 변수로 선언한 코드입니다.

6. 변수나 함수 선언시에 앞에 public이나 private이 붙어있지 않으면 디폴트로 private으로 지정됩니다. 'void Start()' 함수는 앞에 아무것도 없기 때문에 앞에 private이 있는 코드와 동일한 코드라고 할 수 있습니다

7. void Start() 함수 내부에 rb = GetComponent<Rigidbody>();를 입력합니다. 이것은 Player 오브젝트의 인스펙터 창 내부에 있는 컴포넌트 중에 Rigidbody라는 컴포넌트를 rb 변수로 불러와서 저장하겠다는 의미입니다.

8. void Update() 함수 밑에 void FixedUpdate() 함수를 추가합니다. Update() 함수는 프레임당 호출을 하며, 보통 UI를 지속적으로 업데이트할 떄에 사용됩니다. FixedUpdate() 함수는 물리 사용을 위해 지속적으로 호출하는 역할을 하는 함수이다.

9. void FixedUpdate() 함수 내에 키보드 입력을 받는 코드를 추가합니다. float moveHorizontal = Input.GetAxis("Horizontal"); 이 코드는 수평축의 입력을 받는 코드입니다. 즉, 왼쪽, 오른쪽의 입력을 받는 코드입니다,

10. 다음 줄에 아래와 같은 코드를 입력합니다.  float moveVertical = Input.GetAxis("Vertical"); 이 코드는 수직축의 입력을 받는 코드입니다. 즉, 위, 아래의 입력을 받는 코드입니다.

11. 그 아래에 Vector3 movement = new Vector3(moveHorizontal,0,moveVertical); 라는 코드를 입력한다. 이 코드는 플레이어를 이동시키는 코드입니다.

12. 다음 줄의 코드는 플레이어에게 힘을 가해서 이동시키는 코드이고 다음과 같이 입력합니다. rb.AddForce(movement * speed);

13. 유니티 에디터 화면으로 들어가서 상단 메뉴바의 Edit 탭을 클릭한 후에  Project Settings 메뉴를 클릭합니다. Project Settings 창이 뜨면 왼쪽의 탭 메뉴 중에서 Input Manager를 클릭합니다.  Axes 메뉴의 왼쪽 화살표를 클릭하면 Script 파일에서 코드를 입력한 Horizontal, Vertical 을 디테일한 항목들을 설정하는 메뉴가 보입니다. Hrozontal 의 하위 메뉴 중에서 Negative Button은 left로 설정되어 있고, Positive Button은 right로 설정되어 있는 것을 볼 수 있습니다. 이것은 이것은 
Horizontal 값이 양수면 플레이어가 오른쪽으로 이동하게 되고, 음수면 왼쪽으로 이동하게 된다는 의미입니다. 키보드의 화살표 방향키로 플레이어를 조작할 때 설정하는 메뉴입니다. 그리고 키보드의 좌우 방향키가 아닌 a,d 키로도 좌우방향으로 플레이어를 이동시킬 수 있는데, 그것을 설정하는 메뉴가 아래의 Alt Negative Button 과 Alt Positive Button 입니다. a키가 음수 값으로 이동하는 것이고, d가 양수 값으로 이동하는 버튼으로 설정되어 있는 것을 볼 수 있습니다. 

14. Input manager 설정이 끝났으면 창을 닫아주고, Script 파일에 코드 작성이 완료되었다면 파일을 닫아줍니다. Project 창 안의 Player Script를 드래그해서 Hierachy 창 내부에 있는 Player 오브젝트 위에 가져다 놓습니다. 그러면 오른쪽의 Inspector 창의 하단에 Script 메뉴가 생성이 되어 적용이 된 것을 확인한 수 있습니다.

15. Player Script 메뉴 안에서 Speed 설정값을 5로 지정해줍니다.+

16. 상단 플레이 버튼을 클릭해서 플레이 모드를 실행시켜줍니다. 이제 키보드 방향키와 키보드의 WASD 키를 눌러보면 Player 오브젝트가 이동하는 것을 볼 수 있습니다.

댓글