Unity3D 기본 설명
- prefab을 클래스 제일 첫번째 선언 : 권장함.
- 모든 객체를 만들때 Z축을 바라보게 만들어야 함.
- prefab break(깨기) : GameObject - Break Prefab Instance
- 새로추가한 카메라에 대해서는 Inspectord에서 Audio Listener를 삭제.
- 카메라 두개 합치기
- Main Camera - Inspector - Camera - Clear Flags : Depth only
- Depth : 10
- 카메라끼리 위, 아래로 겹쳐서 놓았을때, 사용가능.
Unity3D Method 설명
- public AudioClip : Sound파일은 AudioClip으로 연결시킴.
- Quaternion.identity : Quaternion - x,y,z,w 값을 가지고 있음. - 4원수라고 불림. (복수수, 허수 체계)
- eulerAngles는 y축, x축, z축 순서로 계산함. (계산하는 방식에 따라 결과값이 다름.)
- 또한 정확히 90도값이 나왔을때, 결과를 출력할 수 없음. (Jimbal Lock이라고함)
- 그러나 Quaternion으로 eulerAngles의 문제점을 해결할 수 있음.
- Ex) (3+4i)(3-4i) = 3^2+4i^2 / (a+b)(a-b) = a^2+b^2 샬라샬라.
- Inspector에 있는 Rotation x, y, z 가 우리가 아는 각도. 60분법각도 (eulerAngles).
- 즉, Quaternion.identity : x축0도, y축0도, z축0도를 뜻함.
- 추가로. obj.transform.rotation은 Quaternion / obj.transform.eulerAngles는 60분법각도.
- Quaternion은 eulerAngles의 상위객체.
- 각도를 직접 입력할때는 eulerAngles를 이용하여 각도 입력해야함.
- GameObject.Find(String ObjectName) : Hierarchy에 있는 GameObject에 있는 것을 찾음.
- Hierarchy에서 첫번째것만 찾음.
- 여기서 못찾아도 NULL값이 들어와도 오류안남. 그냥 null값만 넘어옴.
- this.transform.Find("String ObjectName) : 자기자신의 자식(child)중에서 Object를 찾음.
- 손주는 못찾음. 자식을 찾고, 또 자식을 찾고 해야함.
- Ex) transform.Find("Gun/spPoint"); 이런식으로 찾으면 됨.
- transform.LookAt(Vector3) : 원하는 Vector3(transform or position)를 Target으로 삼아서 쳐다봄.
- Vector3.Distance(position1, position2) : 두 위치의 거리를 구하는 함수.
- Ex) if문을 이용하여 dist <= 30 이런식일때만 LookAt을 사용하여 영역을 지정하여 쳐다보게 할 수 있음.
- Debug.DrawRay(position1, position2,Color color) : position1위치에서 position2위치까지 디버깅상태에서만 선을 그린다.
- Physics.Raycast(position1, position2, out, num) : 이전에 [ RaycastHit hit ] 선언한 후에 함수호출.
- position1에서 position2방향으로 num(m단위)으로 검출되면 out으로 정보를 출력.
- 가리키는 방향 탐지후 그 정보를 out으로 데이터 출력. out은 RaycastHit 형태 변수를 써주면 됨.
- num은 거리.
- yield return new WaitForSeconds(2); : 루프중에 2초동안 딜레이시킴.
- 이때 메소드의 리턴타입은 IEnumerator로 변경해야 한다.
- 이렇게 만든 메소드는 CoRoutine 이라고 부름.
- 호출할때에도 변경해줘야한다. ShootBullet이라는 함수이름을 가지고 있을경우 ShootBullet(); 이라고 사용하던 것을 StartCoroutine("ShootBullet"); 이라고 호출하는 것으로 변경해야한다.
- coll.transform.root.gameObject : 해당 오브젝트의 부모오브젝트 탐색시 사용. (Collider의 경우임)
- getButton / getButtonDown : 이 둘의 차이는 Down이 붙으면 단발성(일회성) 임.
- 연속적인 값이 필요하거나 연속적으로 행동을 취할때는 getButton을 이용(Down을 제외한 메소드)
- Vector3.zero : 3차워 데이터 Vector3를 (0,0,0)으로 초기화
- Screen.orientation = ScreenOrientation.Portrait : 모바일 기기 설정. 세로모드로 고정.
- Screen.sleepTimeout = SleepTimeout.NeverSleep : 모바일 기기 설정. 게임중에는 절대 잠들지 않음.
- Input.acceleration.x : Unity3D 4.2부터는 방향 상관없이 왼쪽을 들면 -, 오른쪽을 들면 + (범위는 -1.0 ~ 1.0) - 모바일기기 중력가속도센서
- 모바일기기 멀티터치소스예제
foreach( Touch tmp in Input.touches) { if(tmp.phase == TouchPhase.Began) { touchStart = tmp.position; } if(tmp.phase == TouchPhase.Moved) { Vector3 touchEnd = tmp.position; if(touchEnd.y - touchStart.y > 100) { StartCoroutine("JumpHuman"); } if(canTurn) { if(touchEnd.x - touchStart.x > 100) { RotateHuman("RIGHT"); } if(touchEnd.x - touchStart.x < -100) { RotateHuman("LEFT"); } } } }
- Application.platform == RuntimePlatform.Android : 현 기기 플랫폼이 Android일 경우 true 반환
- Application.platform == RuntimePlatform.IphonePlayer : 현 기기 플랫폼이 Iphone일 경우 true 반환
- 그 이외에는 else 로 구분하여 처리하여 PC로 구분하면 됨.
- animation.Play(Animation) : 해당 오브젝트의 애니메이션을 실행할 수 있다.
- Animation 인자는 Inspector - Animation - Animations 안에 있는 키값을 넣어주면 됨.
- Random.Range(0, 3) : 0~3까지 난수생성
- Quaternion / eulerAngles 변경 : 밑에 예제
Quaternion ang = Quaternion.identity; ang.eulerAngles = new Vector3(0, 95, 0);
- OnTrigger : Is Trigger 체크되어있을때.
- OnTriggerEnter(Collider coll) : 충돌이 일어날때.
- OnTriggerStay(Collider coll) : 충돌중.
- OnTriggerExit(Collider coll) : 충돌이 끝날때.
- OnCollision
- OnCollisionEnter(Collision coll) : 충돌이 일어날때.
- OnCollisionStay(Collision coll) : 충돌중.
- OnCollisionExit(Collision coll) : 충돌이 끝날때.
- (GameObject).SendMessage("Function", parameter, SendMessageOptions.DontRequireReceiver); : 외부 게임오브젝트클래스의 함수를 호출할때 사용.
- "Function" : 메소드 이름.
- parameter : 인자값 전달.
- SendMessageOption.DontRequireReceiver : 반환값없음. Thread로 동작?
- OnGUI() : 화면에 Text, Button 등 GUI를 출력(루프)
- GUI.Label(Rect(left, top, width, height), "text") : 원하는 위치에 텍스트 출력
- 좌측상단이 x, y 좌표 0을 의미
- if(GUI.Button(Rect(left, top, width, height), "text") { 내용 } : 원하는 위치에 버튼 출력후 true일 경우 내용 실행
- Application.LoadLevel("scene") : scene 이름의 씬 로드.
- Application.Quit() : 앱 종료. 모바일이랑 PC만 지원. 웹은 안됨.
- string str = "<color=red><size=20><b><i>helloworld</i></b></size></color>"
- string에 HTML 태그 지원. Label에 적용가능.
- ImportPackage - Particles : Unity3D에서 기본적인 이펙트효과를 담고 있음.
- Dust : 먼지 효과.
- Fire(Fire1, Flame) : 불 효과.
- Legacy Particles : 터지는 효과.
- Particles Property
- Ellipsoid Particle Emitter
- Min Size, Max Size : 입자의 크기
- Min Energy, Max Energy : 입자의 수명 (초단위)
- Min Emission, Max Emission : 입자의 개수
- Velocity : 입자의 움직이는 방향 (World, Local, Rnd 기준이 있음)
- Emitter Velocity Scale : 뱅글뱅글할꺼냐라는 뜻.
- Simulate in Worldspace : 퍼질것인지
- One Shot : 단발성 효과여부
- Ellipsoid : 원안에서 출현을 어디서 할것인지 공간을 x,y,z로 정함.
- Particle Animator
- Size Grow : 점점 커지면서 날라갈 것인가를 설정(숫자가 커질수록 입자가 커짐)
- Rnd Force : 각 방향에 랜덤으로 가해지는 힘을 설정.
- Force : 각 방향에 가해지는 힘을 설정.
- Damping : 이미설정되어있는 값들을 한번에 다시 조정할때 사용
- Autodestruct : 체크되어 있으면 한번 번쩍거리고 사라짐.
- Particle Renderer
- 일단 넘어감.
- ImportPackage - Character Controllers : Unity3D에서 기본적으로 제공하는 주인공캐릭터
- 3rd Person Controller : 3인칭
- Animation을 제외한 Component들을 삭제. (기본적으로 지원해주는 것들인데 Collider를 새로 정해주는 것이 효율적임)
- First Person Controller : 1인칭
- ImportPackage - Water (Pro Only) : 물효과. Pro 버젼에서만 가능.
- Daylight Water : 움직이는 물효과 (찰랑찰랑~)
Unity3D 버튼설명
Unity3D Component 설명
- 모든객체는 Collider가 있어야 충돌 및 객체끼리 겹치지 않음.
- Rigidbody - Constraints - Freeze Position, Freeze Rotation 해당하는 좌표는 rigidbody의 영향을 받지 않도록 하는 기능.
- Inspector - Animation - Animations : 각 오브젝트의 애니메이션들이 집합으로 되어 있음.
Unity3D 관련사이트 소개
'NOTE > Unity' 카테고리의 다른 글
[Unity] 고급과정 4일차 필기내용 (펌) (0) | 2016.10.17 |
---|---|
[Unity] 고급과정 3일차 필기내용 (펌) (0) | 2016.10.17 |
[Unity] 고급과정 1일차 필기내용 (펌) (0) | 2016.10.17 |
[Unity] Mobile Touch (펌) (0) | 2016.10.13 |
[Unity] 짧은 개념 정리2 (0) | 2016.10.07 |