2022_1학기_중간고사_게임프로그래밍

CJB_ny·2022년 4월 22일
2
post-thumbnail

1. 유니티 툴에 대한 5가지 뷰, Unity Hub & Unity Editor의 개념

  1. Project view (중간 하단)
  • 게임에 필요한 Asset을 모아두는 뷰
  1. Scene view (왼쪽 상단)
  • Statge 를 Design하고 플레이어를 배치하는 3차원 공간
  1. Hierarchy view (중간 상단)
  • 씬 뷰에 배치한 모든 객체들을 계층 구조로 나열하는 뷰
  1. Inspector view (오른쪽)
  • 게임 오브젝트의 속성을 보여주는 뷰
  1. Game view (왼쪽 하단)
  • 개발 중인 게임을 실행해 볼 수 있는 뷰

Unity Hub & Unity Editor의 개념

  • Unity Hub : Unity 프로젝트 및 설치를 관리하도록 해주는 관리 툴

  • Unity Editor :개발 환경을 제공하는 게임 엔진이자, 다양한 개발, 제작을 위한 통합 제작 도구


2) 게임엔진의 특징 - 게임엔진아 가지고 있어야 할 기능

게임엔진이란?

-> 게임 엔진은 종합적인 컴퓨터 소프트웨어 시스템을 보다 손쉽게 개발할 수 있도록 도와주는 개발 툴이다.

a. 게임엔진의 특징

  • 게임의 세부적인 구성 요소(스크립트의 지원, 게임 데이터 로드, 월드의 맵을 구 성) 등은 제작 게임의 성격과 규모에 의해서 제거 또는 확장
  • 게임 구성 요소들과 라이브러리들의 연계 작업이 중요
  • 각 엔진은 각 엔진 특유의 인터페이스를 갖고 설계
  • 상용 엔진은 장르별 특징을 아우르는 범용성과 확장성을 보장하도록 설계

b. 게임엔진이 가지고 있어야 할 기능

  • 렌더링

  • 가시성 관리

  • 실세계 시뮬레이션 - 충돌처리, 물리

  • 캐릭터 지원 - 모습, 움직임, 행위 및 의사 결정

가시성이란?


3) 계층 뷰에서 갖는 객체들간의 계층적 관계의 의미는 ?

  • 모든 객체들을 계층 구조로 나열한다.

  • 계층구조로 객체들을 구성하면 그룹화하여 다른 객체의 하위 객체로 드래그 앤 드롭 가능

  • (Parent - Child 기능)

-> Crate Empty(이름 : parent)로 만들어 놓고 parent 오브젝트 밑에 다른 오브젝드들을 드래그 드롭이나 코드로 생성 or 복붙을 하게되면

parent오브젝트만 움직여도 하위 자식 오브젝트들이 움직이게된다.


4) 탱크의 이동처리에서 필요한 요소는?

  • 해당 오브젝트의 이동 속도 변수(값) (전후진 값)

  • 해당 오브젝트의 회전 속도 변수(값) (회전 값)

  • 해당 오브젝트의 이동할 거리를 입력할 변수 = 속도 * 시간

  • 거리입력을 어떤방식으로 할지 ex) Laycast/KeyBoard의 Input/etc...


5) Prefab 이란?

  • 미리 만들어진 Object를 재활용 가능한 형태로 만들어 두는 것을 의미

  • Resource.Instantiate 로 가져올 수 있다.


6) AddForce() / Instantiate() / Destroy() / Lerp() 함수의 뜻 설명

  • AddForce()

    물리 오브젝트를 이동하거나, 이동 속도 또는 방향을 변경할 때 사용
    Rigidbody.AddForce(방향 * 힘에 대한 백터, 가해지는 힘);

  • Instantiate()

    인스턴스화, 유니티에서의 인스턴스(instance)는 이미 만들어진 게임 오브젝트를 필요할 때마다 실시간으로 만든다는 의미 Resource.Instantiate 로 가져올 수 있다.

  • Destroy()

    Destroy(삭제할 GameObject, 몇초뒤에 사라지게 할것인가)
    Destroy 함수는 게임 오브젝트 자체에 영향을 주지 않고 개별 컴포넌트를 제거한다.

  • Lerp()

    a, b값이 주어졌을 때 그 사이에 위치한 값을 추정하기 위하여 직선 거리에 따라 선형적으로 계산하는 방법


7) 충돌 체크 : 컴포넌트, 이벤트 함수

  • 충돌 이벤트

    Collider 컴포넌트를 포함한 게임오브젝트간의 충돌이 발생하면 Conllision 또는 Ontrigger 이벤트가 발생

  • 충돌 체크

    함수명 : OnTriggerEnter
    호출조건 : 두 물체간의 충돌이 일어나기 시작했을 때, is Trigger 옵션:체크

  • 충돌관련 함수 6개 있다.

    	1. OnCollisionEnter()    ]
    	2. OnCollsionStay        ]   => 물리적인 현상 일어남.
    	3. OnCollisionExit       ]
    
    	4. OnTriggerEnter       ]
    	5. OnTriggerStay        ]    => 물리적인 현상 없다.
    	6. OnTriggerExit        ]
    
    	여기에 IsTriiger라는 특성이 있다.
  • Istrigger 체크 하는 경우

    	물리적인 현상이 안 일어나는것
  • IsTrigger 체크 하지 않는 경우

    	물리적인 현상이 일어나는 것 

둘다 RigidBody, colliderBox 있어야됨


8) 따라오기 두 가지 방법에 대해 설명 (or)

  • target을 지정하고 적탱크 변수를 생성, 초기화

  • Nav Mesh Agent 컴포넌트를 이용

9) NavMeshAgent Component 를 이용한 따라오기 구현 방법

  • 충돌 체크 Nav Mesh Agent 컴포넌트

  • Stopping Distance 지정

  • nvAgent = this.gameObject.GetComponent();

  • nvAgent.destination = target.position;


10) 스코어를 구현하는 방법은?

  • Canvas 생성 -> Canvas에 Text UI 오브젝트 생성
  • Text UI에 text컴포넌트를 스크립트 코드에서 GetComponent로 가져오기
  • 충돌발생이나 이벤트 발생시 GetComponent로 가져온 변수에 값증가 or 값내리기

11) 씬 전환 방법

  • 다른 scene 생성

  • 사용할 Scene을 Build Settings에 삽입

    File -> BuildSetting

    씬을 BuildSetting에 드래그 드롭

  • 스크립트에 using UnityEngine.SceneManagement; 선언 후 SceneManager.LoadScene()함수 사용

12) 그래픽스 파이프라인이란?

CPU에서는 Rendering을 못하기 때문에 GPU에서 한다. * 3차원 도형 및 이미지를 2차원 레지스터 이미지로 표현하기 위한 단계적 방법(방법을 몇 단계로 나눈 것)을 의미한다.

13) Vertex와 Vertex Buffer란?

  • Vertex

    	3D 공간에서 위치를 가지는 정점 → Vector라고 함
  • Vertex Buffer

    	매 프레임마다, Vertex Buffer라는 Buffer 리스트 안에 Vertex들을 다 밀어 넣는다.
    
    	점들의 위치(Vertext)를 저장한 배열, Vertex들을 Buffer List에 저장하여 일괄적으로 GPU(Graphics)에게 보내는 매개체

    삼각형 정보를 가지고 있는게 Mesh Filter이고 Mesh Render가 이것을 렌더링 해주는 것이다.

이것을 통째로 -> T & R기능 이라고한다.

그래서 그래픽카드 안에서 T & R 기능을 구현을 했다.

트랜잭션 갯수가 많다 -> T & R 기능 좋다.( 기하학적인 움직임, 색깔을 어떻게 표현을 하는가?에 대한 것 )

14) 조명

  • Directional Light: 무한히 멀리 놓고 태양처럼 씬의 모든 것에 영향을 줌
  • Point Light: 전구처럼 모든 방향에 있는 위치에서 균등하게 빛남
  • Area Light: 사각형 형태의 조명으로 한쪽 면에서 빛을 발하는 조명
  • Spot Light: 한 방향에 있는 점으로부터 빛나고 자동차의 헤드라이트처럼 원뿔 안 에 있는 오브젝트들만 비춤

15) Mesh Filter / Mesh Renderer / Mesh Collider

  • Mesh Filter: 3차원 형상 데이터
  • Mesh Renderer: Mesh Filter를 화면에 렌더링 해주는 컴포넌트
  • Mesh Collider: Mesh형태의 콜라이더 - 상세한 충돌처리할 때 사용. 즉, Mesh Renderer에서 Rendering된 오브젝트의 충돌 처리를 할 때 사용하는 것.

추가로 알아야 할 것들

노멀맵 Or 하이트맵이 배틀 그라운드의 좌측하단의 미니맵 같은 거라고 보면 된다.

음영처리로 색이 진하면 고지대, 색이 연하면 저지대 이런식으로 구현한것임.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글