[ Unity3D 0301]
GameObject 클래스
Constructor(생성자)
GameObject (생성자 Script 예제)
GameObject는 new를 통해 만들어 질 수 있으나, Rigidbody / BoxCollider 등은 new를 통해서 만들 수 없다.
즉, Factory Pattern 처럼 GameObjcet를 통해서 만들어 달라고(AddComponent) 해야 한다.
실습 : GameObject를 동적으로 만들어 볼 수 있도록 한다.
생성자 Script를 응용해서 "MeshFilter"와 "MeshRenderer"를 만들어 봄
실행 타임 중에 MeshFilter에 기본 Mesh를 삽입해 봄
Variables(맴버 변수들)
transform ~ particleEmitter 영역 : Component를 위한 변수들
networkView : 네트워크와 관련된 것
hingeJoint : 물성과 관련된 것
어떤 Component들은 GameObject 내에 오직 하나만 있을 수 있거나 혹은 중복된 Component들이 있을 수도 있음
Audio Source / Collider 등은 여러 개 있을 수 있음
layer :
tag :
activeInHierarchy : GameObject의 상태
참고 : Enabled/Disable : Component의 상태
Functions
GetComponent : Component를 얻어오는 함수
SetActive :
CompareTag :
AddComponent :
SampleAnimation :
SendMessage : 자기 객체에 Event 전달 (자기 객체의 다른 Script에도 전달)
BroadMessage : 자기 객체와 자식 객체들에게 전달
SendMessageUpwards : 자기 객체와 자기 부모 객체들에게 전달
Class Funtion
CreatePrimitive : Unity에서 제공하고 있는 기본 도형(Cube, Sphere 등)을 생성
FindWithTag : Tag를 가지고 GameObject를 찾음
FindGameObjectsWithTag :
Find : name을 가지고 GameObject를 찾음
Inherited Class Functions
Instantiate : 복제해서 만든다
Destory :
Component 클래스
Variables
transform ~ particleEmitter 영역 : Component를 위한 변수들
Assets을 다른 프로젝트에서 사용할 수 있도록 Unity3D에서 제공하는 패키지
Package Import 3가지 방법
프로젝트 생성시 import할 수 있음
현재 프로젝트에서 메뉴를 활용하여 import할 수 있음
Assets >> Import Package
Package 파일을 더블 클릭해서 실행
현재 프로젝트가 떠 있는 경우에는 그안에 import 됨
Package 파일이 위치한 경로에 한글이 들어가면 작동하지 않음
Package Export 방법
Package에 포함할 Assets들을 선택한 후 Export Package 메뉴를 통해 생성
기본 Package
Standard Assets(Mobile) : 스마트폰 앱 제작에 필요한 여러가지 기능들을 제공
Character Controller : Character Controller를 기반으로 처리하는 패키지
First Person Controller
3rd Person Controller
Glass Refraction :
Image Effects
Light Cookies
Particles
Physics Materials
Projectors
Scripts
Skyboxes
Terrain Assets
Toon Shading
Tree Creator
Water(Basic)
Water(Pro Only)
[ Unity3D 0302]
[ 2D Mario Clone - Ch02 ]
Part 4: Controller Setup
캐릭터에 Collision Box 조정, Audio 추가
여기 부터 Part13 까지는 [ CharacterController ] 클래스를 이용해서 주인공 캐릭터를 다루는 Script를 설명하고 있음
주인공 캐릭터를 복제 후 CharacterController, Audio Source 삭제
Component >> Physics >> CharacterController >> 캐릭터 크기에 맞게 조정
Height : Controller 크기 조정
Radius : Controller 넓이 조정
Center : Controller의 위치 조정
Slope Limit : Controller가 올라갈 수 있는 경사도
Step Offset : ?
Skin Width : ?
Min Move Distance : 최소 움직임의 거리
Component >> Audio >> Audio Source
Part 5: Controller Types
Character Controller 설명 및 추가
[05:13] SimpleMove 소스를 테스트
Transform.TransformDirection : 로컬 좌표계를 기준으로 방향 벡터를 만듬(크기까지 포함)
그러나 여기서는 월드 좌표계와 로컬 좌표계가 같기 때문에 굳이 필요하지 않을 수 있음
<Source> playerControls0501
[07:21] Move 소스를 테스트 >> 이소스를 기본으로 사용
Input.GetAxis("Vertical") 받지 않도록 함
그래야 좌,우 입력만 받게 됨
Move의 인자로 moveDirection 사용하고 있으며, moveDirection은 매 프레임마다 gravity(중력)의 영향을 받고 있어 y축으로 영향을 받음
또한 isGround(캐릭터가 지면에 있는 경우)에는 입력값(Input.GetAxis())을 받아 moveDirection에 영향을 줌
<Source> playerControls0502
Input 설정 : Edit >> Project Settings >> Input
Part 6: Controller Move Jump
간단한 Jump / Walk 처리
[15:52] Basic Controller 처리
"!isGround" 처리 부분이 있는 경우와의 차이점
없는 경우에는 점프를 뛴 상태에서는 좌,우 키를 받지 않는다. 그러나, 있는 경우에는 점프를 뛴 상태에서도 가능함
<Source>playerControls0601
[18:84] 높은 점프 처리
GetButton : 버튼이 눌려져있는지를 계속 체크
GetButtonDown : 버튼이 눌렸는지 한번만 체크
<Source>playerControls0602