상세 컨텐츠

본문 제목

Unity3D 고급과정 1일차 필기내용 - T아카데미

프로그래밍/컴퓨터관련

by jin* 2013. 10. 8. 20:08

본문




Unity3D 4.2 Base Setting
  • Layout - 2by3 가 일반적인 레이아웃
  • Unity - Preferences - General - Always Show Project Wizard Check (동시 프로젝트 오픈가능)
  • Unity - Preferences - External Tools - External Script Editor 에서 다른 편집기 툴로 변경 가능. (Ex - Microsoft VisualStudio 등)
    • 다른 툴로 변경시 Assets - Sync MonoDevelop Project 로 선택해서 실행해야 자동완성이 적용됨.
  • Unity - Preferences - External Tools - Image application 을 이용하여 이미지 편집 가능. (Ex - Photoshop 등)
  • Assets - 메인창에 있는 프로젝트 메뉴와 같음.
  • GameObject - 유니티에서 제공하는 오브젝트 생성 및 관리. (간단한 오브젝트만 생성가능)
  • 좌표설정시 Y가 위 / X가 오른쪽/ Z가 뒤

3D 모델링 및 축 관련
  • 3DMAX와 AutoCAD를 제외하고 모든 3D툴은 유니티와 같은 좌표를 가짐
  • Unity3D는 왼손좌표계를 사용함.

  • 일반적으로 디자이너가 3D모델링을 할때 오른손좌표계로 받음. - Z축이 앞으로 보도록 개발자가 디자이너에게 요청해야함.
  • X : RED / Y : GREEN / Z : BLUE - 좌표축과 색상을 매치시켜서 본다.
  • fbx, 3dx(MAX이전 버젼 확장자), obj, dea 등의 확장자만 Unity3D에 불러올수 있음. (y축이 위, z축이 전방으로 파일을 받아야함)

Unity3D 회전축
  • 오브젝트가 앞으로 기우는것은 X축 회전
  • 오브젝트 중심으로 뱅글뱅글 도는 것 (캐릭터 회전, 자동차회전) Y축 회전
  • 오브젝트가 화투짝처럼 돌때, 주사위 굴릴때, 바람개비 도는 형식은 Z축 회전

Unity3D 스케일링
  • 각 축대로 확대 및 축소됨.
  • 외부 3D 오브젝트를 가져왔을경우 사이즈 줄이는법
    • Object파일 Inspector에서 Scale Factor에서 단위를 줄임.
    • Hierarchy로 Object를 가져와서 기본 1m짜리 Cube와 구분하면서 적용한다.
    • 절대 Transform에서 사이즈를 줄이면 안됨.(Scale이 1:1:1 을 유지해야 함).

Unity3D 버튼설명
  • Global 좌표버튼
    • 기즈모가 바뀜. 
    • 게임을 기준으로 하는 절대좌표.
    • World 좌표라고도 불름.
  • Local 좌표버튼
    • 나를 기준으로 하는 좌표.
    • 오브젝트가 바라보는 방향에서 좌표를 계산.
  • Global/Local 좌표버튼들은 실제 게임에는 아무 영향이 없고 개발중에서만 영향을 끼침.
  • Center 버튼
    • 한개 오브젝트 선택시 전혀 영향없음.
    • 두개 이상 선택했을때 오브젝트간 중간에 중심좌표가 나타남.
    • Command+Shift 누른상태에서 기즈모를 누르고 바닥으로 내리면 자석효과
  • Pivot 버튼
    • 두개 이상 오브젝트 선택시 마지막으로 선택된 오브젝트 중심으로 좌표가 나타남.
  • Persp 모드
    • 일명 투시도 모드
    • 원근이 있는 모드
  • ISO 모드
    • isometric의 약자
    • 직교투영방식, 등각투영방식이라고 함.
    • 오브젝트가 멀리있던 작게 있던 같은 크기로 보임.
    • 원근방식이 무시됨.
  • Persp / ISO 모드중에서 좌표맞추기가 ISO가 쉬움. 일반적으로 ISO사용.
  • Scene에 Gizmos 콤보버튼
    • Gizmos(기즈모)의 사이즈를 조정할 수 있음.

Unity3D Object 설명
  • Plane
    • 눈금하나당 1m 로 계산.
    • plane은 솔리드모드가 아닌 서피스모드를 사용 - 사용자에게 보이는 부분만 신경씀.
    • plane을 뒤집어버리면 오브젝트가 보이지를 않음. (개념이해필요)
    • Inspector에 있는 진한글씨들을 Component라고 함.
    • Inspector에 있는 작은글씨들은 Property 및 속성이라고 불림.
    • 일반적으로 화면의 중심은, 좌표 0,0,0으로 일반적으로 정하고, 이것은 항상 상대적임.
  • Directional Light
    • 햇빛처럼 거리는 없고 방향만 있는 빛(Light).
    • 물체와 가까워진다고 해서 밝아지지도, 멀어진다고 어두워지지 않음.
    • 기즈모를 가지고 작업하는데 불편하지 않게 구석에 쳐박으면 됨.
    • Inspector에서 Intensity로 밝기 조정 및 Color로 빛 색상 조정가능 (밝기 기본은 0.5)
  • Sphere
    • 오브젝트 좌표가 0,0,0으로 안될수 있기에 톱니바퀴 버튼에서 'Reset Position'을 하면 0,0,0으로 설정됨.
    • Component - Rigidbody 선택시 중력이 적용됨.
    • Rigidbody - Use Gravity는 지구의 중력을 사용함. / 미체크시 '원'오브젝트가 굴러가지 않음.
  • Main Camera
    • 원하는 좌표에 두고 사용하면 됨.
    • 일반적으로 X좌표는 0으로 맞춰놓고 사용함.
    • Rotation 을 건드린 카메라는 Global좌표상태에서 움직여야 좌표들이 안깨짐.
    • 화면비율은 멀티플랫폼으로 만들어야 하기때문에 'Free Aspect'로 맞춰놓고 사용.
  • Sound Clip (Audio Source)
    • 소리는 Main Camera가 들음.
    • Play On Awake 체크시 시작과 동시에 소리가 발생.
  • Hierarchy Object
    • 각 Object끼리는 겹칠 수 있으며, 자식과 부모관계를 가진다.
    • Object가 겹치면 움직일때 같이 움직임.
  • Transform
    • 위치정보만 가지고 있음.
    • prefab으로 선언된 것은 무조건 Transform으로 선언해야함.
  • GameObject
    • 모든 정보를 가져올 때 사용.

Unity3D Assets 설명
  • Physic Material
    • Bounciness - 반사정도
    • Friction Combine, Bounce Combine - 반사되었을때 반응설정.
    • 원하는 오브젝트에 끌어서 넣어야함.
  • Material
    • 색상 및 텍스쳐 적용가능.
    • 오브젝트에 비쥬얼을 주기위한 기능.
  • Image
    • Material에 Image를 적용할 수 있음.
    • 적용 확장자는 PNG, JPG, BMP, PSD 등을 사용할 수 있음.
    • 단, AI등 벡터이미지파일들은 적용할 수 없음. (비트맵파일만 사용가능)
    • 이미지를 오브젝트에 적용시 Inspector에서 Material 속성에서 Tiling x, y 를 -1로 변경
    • 적당한 이미지 사이즈 확인하려면 RGB - Mipmaps로 변경후 색상으로 확인.
  • Import Package - Script - SmoothFollow
    • 카메라가 자연스럽게 Target을 쫓아다니는 스크립트.
    • 카메라에 Script를 적용하고 Target을 끌어다가 넣어주면 됨.
  • Import Package - Skyboxes
    • 하늘에 관한 Assets Package들.
    • 각 날씨, 시간마다 하늘의 대한 데이터들이 있음.
    • 메인카메라에게 그냥 주면 안들어가짐 - 메인카메라에서 Component - Rendering - Skybox 추가후 적용.


Unity3D Method 설명
  • Event 함수는 모두 On으로 시작함.
  • Start() : 최초 파일로드시 실행. Init역할.
  • Update() : 게임이 실행되는동안 반복적으로 실행되는 함수. Loop됨.
    • Update함수는 실시간으로 실행되는 것이 아니라 함수가 끝난후 한꺼번에 실행함.
  • OnCollisionEnter(coll : Collision) : Collision 충돌시 자동으로 함수호출. 이벤트함수. 인자값으로 충돌된 오브젝트를 가져옴. - 둘중 한 오브젝트는 Rigidbody가 있어야함.
  • audio.Play() : 오브젝트에 들어있는 Audio Clip 소리 실행.
  • Time.deltaTime : 현재프레임과 직전프레임간 사이. (사이의 절대적. 물리적인 시간)
    • 모든 시간계산관련만 deltaTime을 사용함.
  • transform.Translate(Vector3) : transform은 스크립트파일을 가지고 있는 객체. Translate는 객체를 이동하는 함수. (Vector3(x,y,z)는 공간객체. 공간을 표기하기도 하지만, 이동할때 어느 좌표로 이동할 것인지도 정하기도 함.)
    • Vector3(x, y, z)를 써야하지만 Unity3D에서는 Vector3.forward, back, left, right, up, down을 이용하여 더 쉽게 사용할 수 있음.
    • transform.Translate(Vector3.forward * speed, Space.World) 사용시 Global(World)좌표로 적용됨.
  • Input.GetAxis(String keyType) : 키보드 입력값을 받아올때 사용. 
    • "Vertical", "Horizontal" 등 타입을 넣으면 -1.0 ~ +1.0 값을 리턴해줌.
  • Time.smoothDeltaTime : 현재프레임과 직전프레임간 사이의 평균적인 시간.
    • Object 움직임이 부드러워짐.
    • 움직임을 구현할때 smoothDeltaTime을 사용.
  • Input.GetKeyDown(KeyCode.key) : KeyCode에 해당하는 키가 눌렸을때 Bool 값으로 반환
  • Input.GetButtonDown(String keyType) : Insfector - InputManager에 있는 Type으로 사용가능.
  • AudioSource.PlayClipAtPoint(soundObject, position) : 원하는 위치에서 사운드오브젝트 재생
    • soundObject : AudioClip 파일을 선택.
    • position : 일반적으로 transform.localPosition 으로 현재오브젝트의 현위치를 선택함.
  • transform.eulerAngles : Inspector에 있는 Rotation에 있는 x, y, z를 각도로 변환하여 Vector3로 반환 (60분법 각도 읽기)
  • Mathf.Clamp(float Angle, maxAng, minAng) : 실수형 반환. 최소값, 최대값으로 제한하여 넘어갈경우, max, min으로 변환하여 반환함.
  • Instantiate(prefab, position, rotation) : 객체 생성하여 화면에 보여줌.
    • prefab - 원하는 오브젝트를 생성.
    • position - 원하는 위치 지정.
    • rotation - 생성시 회전각도 지정.
  • (Transform object).rigidbody.AddForce(transform.forward * power) : rigidbody적용과 함께 원하는 방향으로 원하는 힘과 함께 적용.
    • power : 힘. 질량에 따라 달라짐.
  • OnTriggerEnter(Collider coll) : 충돌판정 Event. 충동시 자동 호출됨.
    • 두물체중에 어느 하나가 "Is Trigger" 가 체크 되어 있을때 호출됨.
  • Destroy(GameObject) : 인자값에 해당하는 GameObject를 삭제시킴. (메모리 해제)
    • Destroy(GameObject, 2); : Start함수에 정의시 2초후에 GameObject가 제거됨.
  • Tag : Inspector에서 Tag를 지정하여 Object를 관리 및 접근할 수 있음.
    • Ex) coll.tag == "WALL" 이렇게 쓰면 BOOL값으로 반환하여 처리할 수 있음.

Unity3D Move 관련
  • 기존 이동 관련은 매 프레임마다 이동할 거리를 넣음.
  • Unity3D에서는 이동할때에 속도(m/s)를 지정하여 처리함.
  • Inspector - InputManager 에서 Gravity와 Sensitivity 수치를 높이면 반응속도가 엄청 빨라짐.

Unity3D 관련사이트 소개


관련글 더보기

댓글 영역