오늘은 C#에서의 변수선언에 대해서 알아보겠습니다.

변수는 프로그래밍에서 기초중의 기초입니다. 그럼 변수가 무엇이냐?

변수는 값을 저장하는 박스라고 생각하면 됩니다. 그런데 이 박스에는 타입이 정해져있습니다.

남자화장실에는 남자만 여자화장실에는 여자만 들어가게 약속된 것처럼 변수에는 맞는 타입에 값만 들어가야합니다.

박스가 정수타입이라면 정수만 들어갈 수 있고

박스가 소수타입이라면 소수만 들어갈 수 있고

박스가 문자열타입이라면 문자열만 들어갈 수 있습니다.

그리고 박스는 이름을 갖는데요 이름은 알기 쉽도록 정하는게 좋습니다.

만약에 정수타입에 나이를 넣겠다면 변수의 이름을 age로 정하면 이 변수를 보고 나이를 넣었구나 알 수 있을겁니다.

이렇게 박스를 준비하는 과정을 변수를 선언한다고 하는데요 컴퓨터에 박스를 준비하는 명령을 어떻게 내리는지 보겠습니다.

컴퓨터에 명령을 내리는걸 '코드를 짠다' 혹은 '코딩한다' 라고 합니다. 그럼 변수를 선언하는 코드를 짜보겠습니다.

먼저 유니티를 실행시키고 프로젝트 뷰에서 우클릭을 해줍니다. 그리고 Create -> C# Script 를 선택해줍니다.

프로젝트 뷰에 스크립트를 만들었다면 더블클릭을 해서 스크립트를 열어줍시다.

잘 만들었나요?

그러면 class라고 쓰여 있는 아래부분에 변수를 직접 선언해보겠습니다.

1
2
3
    int age = 24;
    float height = 24.1f;
    string myName = "백자까";
cs

int 는 integer의 약자로 정수형을 뜻합니다.

float은 실수형을 나타내는데요 float형은 값을 넣을때 숫자뒤에 반드시 f를 붙여줘야 합니다. 정해진 약속이기 때문입니다.

string은 문자열타입이라는걸 알려줍니다. 그래서 문자열을 담을 수 있는데요 컴퓨터는 "  "안에 든것을 문자열로 취급합니다.

간단하죠? 

그럼 간단히 변수들의 타입에 대해서 확인해보겠습니다.

정수형 : byte, short, int, uint, long, ulong

실수형 : float, double

문자열 : string

불린형 : boolean

그리고 변수의 이름을 설정할 때의 주의사항이 있습니다.

1. 첫글자는 영문자, 밑줄(_)만을 사용할 수 있습니다.

2.숫자는 쓸 수있지만 첫글자로는 사용불가능합니다.

3.키워드는 식별자로 사용할 수 없습니다.

4.대소문자를 구분해서 사용해야합니다.


모두 이해하셨다면 유니티 강의를 이해하는데 큰 무리는 없을 겁니다. 

5. 유니티 스크립트

끝!

'Language > C#' 카테고리의 다른 글

1.C# 맛보기  (0) 2017.09.07


이번에는 유니티에서 물리엔진을 적용해보겠습니다.

사용할 것은 RigidBody와 Physic Material 그리고 Collider에 차례대로 알아보겠습니다.

일단은 물리엔진을 적용할 간단한 프로젝트를 하나 만들어볼건데요 땅을 만들어서 공이 튕기도록 만들어 볼겁니다.

프로젝트를 생성하고 큐브를 하나 만들어줍니다.

[메뉴] GameObject -> 3D Object -> Cube 를 선택해줍니다.

이름은 Ground로 변경해줍니다. 그리고 X값과 Z값을 키워서 늘려줘서 땅의 모양처럼 만들어줍니다.

그리고 공이 굴러가도록 Rotation값을 수정해줘서 경사진땅을 만들어 줍니다.

이번에는 굴러갈 공을 만들어 보겠습니다.

[메뉴] GameObject -> 3D Object -> Sphere 를 선택해줍니다.

이름은 Ball로 수정해줍니다.

이름은 Ball로 변경해줍니다. 그리고 Position에 X값과 Y값을 수정해서 굴러갈 위치에 둡니다.

그리고 Rigidbody라는 컴포넌트를 하나 추가해줍니다. Rigidbody에 대해서는 아래에서 설명해드리겠습니다.

여기까지 잘 따라오셨다면 게임뷰에 아래와 같은 모습을 볼 수 있습니다.

혹시라도 조금 달라서 똑같게 보고 싶다 하시는 분은 카메라의 값들을 수정하시길 바랍니다.

카메라의 Position을 0 6 -26 으로 수정해주시면 됩니다. 자 그럼 재생을 한번 해보겠습니다.

공이 아주 잘~ 굴러갑니다!!! 처음 적용해보는거라 신기하네요.

잘 굴러갔나요? 그럼 이제 Rigidbody에 대해서 알아보겠습니다.

공이 아래로 굴러가기 위해서는 공에 중력과 같은 힘이 있어야 움직이겠죠?

그래서 중력과 같은 물리법칙을 유니티에서는 Rigidbody라는 컴포넌트를 통해서 구현합니다.

그런데 왜 Rigidbody를 공에만 추가했을까요???

Rigidbody를 Ground에도 적용을 시키게 되면 Ground도 중력때문에 공과 같이 아래로 떨어지게 됩니다.

Rigidbody에서 특정 물체가 중력에 영향을 안받게 하기 위해서는 Use Gravity라는 속성의 체크를 해제해주시면 됩니다.

그럼 Use Gravity를 해제하면 무중력 상태와 같이 동작한다는 뜻이지 물리법칙을 받지 않는다는 뜻은 아닙니다.

그래서 실행하면 공에 맞은 Ground가 회전하면서 아래로 떨어지는걸 볼 수 있습니다.

제가 원하는건 설정한 땅 위에서 공이 굴러가길 원한 것이기 때문에 Ground에 Rigidbody컴포넌트는 삭제해줍니다.

 

그럼 이번에는 Physic Material을 알아볼건데요.

Physic Meterial은 물리동작을 할 때 물체가 어떤 물성을 갖는지를 결정해주는데요 정할 수 있는 값은 4가지 입니다.

1.Bounciness : 얼마나 튀어오르는가에 대한 것입니다.

2.Static Fiction : 마찰력인데요. 멈춰있는 상태에서 움직이기 시작하려면 어느정도의 힘이 가해져야 하는가에 대한 값입니다.

3.Dynamic Fiction : 움직이는 중에 마찰력이 어느정도 될 것인가에 대한 값입니다.

4.Fiction Combine : 마찰력이란 것은 두 물체가 있어야지만 마찰력이 생기는거죠? 그래서 공과 그라운드가 부딪혔을 때 마찰력이 생기는 겁니다.

   이 때 공의 마찰력이 있을 것이고 그라운드의 마찰력이 있을텐데 어떤 값을 적용할지의 대한 선택입니다.

5.Bounce Combine : 마찬가지로 두 물체가 부딪혔을 때 어떤 Bounciness의 값을 쓸지에대한 것입니다.

Physic Material을 만드는 방법은 Project뷰에서 우클릭을 누르고 Create -> Physic Material을 눌러 만들어줍니다. 이름은 Bouncy라고 설정해주겠습니다.

그리고 Bounciness의 값을 1로 설정해줍니다. 그리고 이제 Bouncy파일을 드래그해서 Ball에 놓아주면 Ball에 Bouncy가 적용됩니다.

적용된 모습은 다음의 Collider를 보면서 확인해 보겠습니다.

 

Collider는 번역하면 충돌체라고 하는데요 말그대로 충돌이 발생했는지를 감지해주는 역할을 합니다.

그래서 만약 Collider 컴포넌트를 삭제시키게 되면 물체와 충돌을 일으키지 않게 되고 통과하게 됩니다.

즉, Rigidbody에서 물리를 적용할 때 공에 적용되는게 아니라 Collider에 의해 적용되는 겁니다.

그래서 Collider가 없으면 그라운드와 부딪히지 않고 그냥 떨어지게 되는겁니다.

Collider의 종류가 모양에 맞게 여러개가 있는데요

Collider를 지웠다가 새롭게 추가할 때 다른 모양의 Collider를 추가해주게 되면 생각했던것과 다른 물리가 적용될 수 있으니 추가 할 때 주의해야합니다.

예를 들어 지금 Ball에 Sphere Collider가 적용되어 있는데 이것을 Box Collider를 추가해보겠습니다.

원래있던 Sphere Collider컴포넌트를 삭제하고 Box Collider를 추가해주었습니다.

공을 잘 보면 겉에 초록색 테두리가 쳐져 있는게 보이는데요. Box형태의 Collider를 추가해줬기 때문에 박스형태의 충돌이 된다고 보여주는겁니다.

이 상태로 재생을 시켜보세요. 공이 잘 굴러가나요?  안굴러갑니다. 그냥 멈추네요.

충돌체가 더이상 동그란 공이 아니기 때문입니다. 그럼 Collider에서 설정할 수 있는 값들에 대해 보겠습니다.

 

Box Collider를 살펴보겠습니다.

Center의 값을 수정해서 충돌체의 위치를 지정할 수 있습니다.

지금은 공의 딱 맞게 되어 있지미나 수정하면 위치가 바뀌게 됩니다.

Size를 수정해서 충돌체의 크기를 수정할 수 있는데요

위의 초록 박스의 크기가 커지고 줄어들게 됩니다.

설정을 잘 못하게 되면 붕뜨거나 파묻히게 됩니다.

 

 

 

 

 

이상 유니티에서 물리엔진을 알아봤습니다.

 

끝!

안녕하세요 이번시간에는 컴포넌트라는것에 대해서 알아보도록 하겠습니다.

컴포넌트는 게임오브젝트의 성질을 정의해주는 역할을 하는데요


예를 한번 들어 볼까요?
하이에라키에서 메인카메라를 선택하고 인스펙터 창을보면 카메라라는 영역이 있죠?
메인 카메라라는 게임오브젝트가 카메라로서 역할을 할 수 있는 이유는 카메라라는 컴포넌트를 가지고 있기 때문입니다.
메인카메라라는 게임오브젝트에서 카메라라는 컴포넌트를 없애버리면 더 이상 카메라 역할을 못하는데요 컴포넌트를 없애기 위해서는 이 버튼을 누르고 리무브 컴포넌트(Remove Component) 를 누르면 됩니다.


그런데 에러메시지가 뜨네요.
GUILayer, FLareLayer 이 두가지가 카메라라는것에 의존적이라고 합니다. 인스펙터창 아래부분에 GUILayer와 FlareLayer가 있는데 이것을 먼저 제거해보겠습니다.


그다음 카메라를 없애볼까요?


카메라라는 컴포넌트가 없어지고 나니까 게임뷰에서 No camera라고 뜨네요. 카메라가 없기때문에 보여줄 화면이 없는거죠.

그럼 다시 카메라를 살려볼까요? 우선 메인카메라는 지워주도록 하겠습니다.

그리고 새로운 오브젝트를 만들어 볼건데요?
메뉴에서    GameObject -> Create Empty   를 눌러줍니다.
그리고 새로생긴 오브젝트의 인스펙터창에서 Add Component버튼을 눌러줍니다. 그러면 여러가지 컴포넌트를 검색할 수 있는데요 Camera 라고 검색을 해서 카메라를 추가해보겠습니다.

 

추가됨과 동시에 게임뷰에 다시 화면이 나오게됩니다.
카메라의 위치는 원하는 위치로 조정해서 맞춰주면 됩니다.

빈 게임오브젝트를 만들어서 카메라컴포넌트를 추가해주면 그 게임오브젝트는 이제부터 카메라가 동작하게 되는겁니다.

지금까지 보신것처럼 컴포넌트는 그 컴포넌트가 추가된 게임오브젝트의 성질을 결정하는 역할을 합니다.

끝!

+ Recent posts