경험들/etc

[Unity] 처음 시작하는 유니티 (공부 일지) 2021.10.30

detail_jy 2021. 10. 31. 02:10
728x90

VR AR 서비스를 위한 프로토타이핑을 배우고 싶어서 유니티도 시작. 

 

유니티는 게임엔진인데 C# 코딩이 필요한 엔진이다. 

 

간단한 프로토타이핑 정도는 배워볼 수 있지 않을까 하고 일단 기초 온라인 튜토리얼을 찾아서 시작해보았다. 

 

3d 모델링도 해야하지만 유니티도 틈틈히 기초적인 부분들은 배워봐야지!

 

튜토리얼 보고 따라하고 강의에서 보여준 결과물들을 그대로 나타나게 하면 굉장히 뿌듯한데

 

사실 원리를 기억하고 나중에 튜토리얼을 안보고도 똑같이 할줄아는게 중요해서 한번 잘 따라했다고 내 것이 되는 건 아니다.

 

튜토리얼 한번보고 그걸로 끝낸 적이 많아서 하루이틀만 지나도 머릿속에서 다 씻겨나간다.. ㅋㅋ 기억력도 점점안좋아지는중. 

 

이 수업에서는 VSCode로 C# 코딩을 같이 진행하는데 코딩 부분은 대충 이해는 하지만 혼자 하기엔 어려움이 있다ㅠㅠ

 

유니티는 특히나 생소한 프로그램이라서 배우는 대로 다시 한번 안보고 따라 만들어보고 수업 노트를 기록 차원에서 블로그에 적어볼 예정이다 

-------------------------------------------------------------------------------------------------------------

 

먼저 유니티의 씬에 큐브를 하나 만들어준다. 

큐브 오브젝트는 현재 아무런 동작이들어가 있지 않은 상태라 play를 눌러도 아무런움직임이 없다.

 

오브젝트에 생명을 불어얺어주는 컴포넌트는 Rigidbody다. 

 

Rigidbody 적용하는 법: 

- 큐브 선택 

- Inspector 패널 에서 add component -> Rigidbody라고 검색 (2D말고) -> Add component 눌러줌 
- rigidbody 컴포넌트는 별도 코딩 없이 오브젝트가 중력에 의해 아래로 떨어지는 효과를 의미 (초간단 설명) 

 

리지드바디를 적용하고 플레이를 누르면 큐브가 허공으로 막 떨어져버림. 

큐브가 떨어지지 않게 받쳐줄 받침대 (플랫폼)을 만들어준다. 

- 큐브 복사해서 하나 만들어주고 Scale에서 사이즈를 넓고 크게 만들어줌 (높이는 냅둠) 

- 해당 오브젝트는 platform이라고 이름 정해줌. 플랫폼은 떨어지지 않고 그자리에 가만히 있어야하니 rigidbody 적용 x 

 

오브젝트에 머터리얼 입히기

- 기초레벨이라 색상 머터리얼만 적용해본다. 
 - Assets 패널에서->우클릭->create->material

 - Inspector 패널-> 원하는 색상으로 바꿔줌.

 - Assets에 머터리얼이 생김. 해당 머터리얼을 적용할 오브젝트로 드래그해서 입혀주면 색상 바뀜 

 

[physics material] 
 플랫폼 오브젝트에 물리적인 속성을 부여하기. 
- 똑같이  asset panel 에서 physics material 로 생성하기

- 인스펙터에서 값 조절해줌. 여기서는 bounciness 를 1로 만들어줌. 

플레이 해보면 큐브가 떨어질 때 튕기는 것을 볼수있음. 

 


Prefab란? 
- previously fabricated object 의 줄임말
- 어떤 게임오브젝트의 템플릿 
- 게임오브젝트의 속성값을 저장해놓은 개념, 같은 것을 반복해서 써야할때, 여러가지 오브젝트들을 한꺼번에 바꿔줘야할 때 유용함. 다른 씬에서 같은 오브젝트를 쓸 때도 전체 씬에 변경적용할 때 유용 

씬의 오브젝트를 Prefab로 만들기 : 
1. prefab 를 만들 오브젝트를 끌어다가 asset 에 놔줌. 모든 오브젝트 요소를 prefab해줄수있음 (Light, Camera 포함) 
2. Asset 에 있는 prefab cube를 씬에다 드래그해서 같은 오브젝트를 여러개 놓을 수 있음. 동일한 오브젝트중 원본이 아니라 prefab로 생성된 오브젝트의 스케일을 바꿀 경우 나머지 오브젝트도 다 똑같이 바뀜. 


VScode로 넘어와서 코딩 작업 : 
- space bar 을 눌러 오브젝트를 움직이도록 하기. 

- 이때 사용될 코드는 Unity Documentation 에 Input > GetKeyDown 을 검색해서 직접 필요한 코드를 찾아보는 방법을 알려주심

(그냥 밥 떠먹여주듯이 코드를 바로 알려주면 편하지만 스스로 필요한 코드를 찾는 방식을 알려주는 것이 배우는데는 더 도움이 된다) 

 

Void Update()

{

이 안에 space를 누르면 OO해라 라는 코드를 넣어주는 것이다.

 

if (Input.GetKeyDown(KeyCode.Space))

        {

            Instantiate (myCube);

        }

 

KeyCode.Space ,즉 스페이스바를 누르면 myCube라는 이름으로 지정된 오브젝트를 Instantiate (생성) 하라는 뜻이다. 

 

유니티로 또 돌아가서 Script를 만들어줘야하는데, 

 

instantiate시킬 오브젝트 선택후, inspector에 가서 add component를 누르고, Shape 라고 검색한다. Shape 라는 컴포넌트가 뜨는 것은 아니고 Shape 라는 이름의 Script를 만들어준다. 

 

해당 스크립트는 Asset에 자동으로 만들어진다. 

 

Shape Spawner 오브젝트 (빈 오브젝트) 에도 script가 생긴 것을 볼 수 있다. 

 

 

 

 Shape Spawner의 Inspector패널에서 script에 각각의  variable명에 해당하는 도형을 매칭시켜줌 

 

(글로 풀어 설명하려니 어렵다...ㅠ) 

 

도형 여러개를 하려면 vscode에서 그냥 쭉 써주면 된다.

 

 

Play하면 오브젝트 instantiate가 잘 되는 거 같은데 콘솔에 왜 에러 메시지가 뜨는지모르겠다..

노이해.. ㅠ 

 

오늘의 일지는 여기까지...

 

유니티 너무 어렵다 ㅠㅠ 

 

그래도 포기하지 말아야지 !! 화이팅 !! 

 

 

728x90
반응형
LIST