본문 바로가기
NOTE/Unity

[Unity] 고급과정 2일차 필기내용 (펌)

by DevAthena 2016. 10. 17.
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에 적용가능.

Unity3D Assets 설명
  • 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 관련사이트 소개