2022. 7. 6. 21:45ㆍ코딩 2막 <C#개념편>
정말 단순해보이면서 간단한 제트카라
과연 제트카라는 어떤 원리로 게임이 구현되는지 지금부터 알아보자
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/041.gif)
가장 먼저 피사체가 어떠한 원리로 움직이는지 알아보자
그럼 jetkara의 moveobject는 어떤 코드로 짜여있는지부터 분석합시다
transform?
유니티에서 생성하는 모든 스크립트들은 transform을 가지고 있다.
일단 cube라는 3D object를 만들었다
transform은 인스펙터(Inspector) 내에 존재하는 클래스(=기능)이다
이 기능은 position(위치 조정), rotation(회전), scale(크기 확대축소)를 가지고 있다
그렇다면 이 기능들을 하나씩 면밀히 뜯어보자
transform.position은 좌표
transform.eulerAngles는 각도
transform.localScale은 크기
Vector3는 좌표 (x, y, z)를 의미한다
그럼 GetKey를 이용하여
직접 컨트롤 하는 피사체를 만들어보자
원리는 다음과 같다
피사체가 W A S D 의 버튼을 누를때 움직일 수 있도록 값을 세팅한다
Esc 버튼을 누르면 gameobject를 파괴하는 기능을 추가한다
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/043.gif)
위의 방식도 있지만 더 효율적인 방식도 있다
바로 translate를 이용하는 것이다
원리는 다음과 같다
여기서 중요한 개념이 등장한다.
static변수!!
C++에서는 구조체의 경우 변수나 함수를 쓰려고 할때
반드시 해당 구조체의 변수나 함수를 선언해주어야 했다
하지만 C#에서는 static변수라는게 있다
Vector3가 구조체이지만 별도의 선언없이 바로 static변수를 쓸수가 있다.
또 Space.Self는 피사체의 무게중심에 따라 방향이 이동하고
Space.World는 월드의 방향에 따라 이동한다 (마치 나침반을 보고 이동하는 것처럼)
여기에 Rotate를 추가하면 어떻게 될까?
축에 따라서 회전을 한다.
유니티엔진을 쓰기위해 C++을 공부한 이유
혹자는 말한다
유니티를 쓰는데 C++은 공부할 필요없다고...
그런 사람 보면
"X같은 소리 하지 마" 라고 말 해줘라
C++에서 우리는 포인터변수에 대해서 배웠다
포인터라는 개념을 왜 공부했는가
개발자들에게 이것을 아는 것은 매우 중요하다
특히 유니티를 쓰는 프로그래머라면 더더욱!
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/023.gif)
C#에서 클래스는 얕은복사를 하고, 구조체는 깊은 복사를 한다는 개념을 배웠다
이때 설명하기위해서는 포인터라는 개념이 필요하다
공감해주셔서 감사합니다
'코딩 2막 <C#개념편>' 카테고리의 다른 글
[C#, 유니티] 07. 유니티 화면에 글자출력 하기 (0) | 2022.07.08 |
---|---|
[C#, 유니티] 06. GetComponent (1) | 2022.07.07 |
[C#, 유니티] 04. 유니티에셋의 미니게임인 JetKara를 분석하자 (0) | 2022.07.06 |
[C#, 유니티] 03. Hello World (0) | 2022.07.06 |
[게임 디자인] 컨셉 기획 2 (0) | 2022.07.05 |