공부/Unity

24.03.20

월러비 2024. 3. 20. 23:36

오브젝트에 카메라 시점 고정

  • 오브젝트 클릭 → shift + F

그래픽 렌더링 파이프라인

  • 메쉬를 이루는 기본 단위 : 삼각형
    • 메쉬는회전할때 각각 시계방향으로 회전한다.
    • 이게 반대가 된다면 백페이스 컬링이 걸린다.
  • DrawPrimitive : IA에 들어있는 이 과정은 현재 데이터 입력 스트림 집합에서 지정된 형식의 인덱스 되지 않은 기하학적 기본 형식 시퀀스를 렌더링한다.
  • 삼각형의 한 꼭짓점을 가리키는 단어 : 정점(Vertex)
    • 어디를 0번으로 놓는지는 개발자 마음이지만 좌측 하단이 편하다.
    • 예시) 0 (-0.5, -0.5, 0), 1 (-0.5, +0.5, 0)(0 바로 위 정점 - 좌상단), 2 (+0.5, -0.5, 0)(우하단), 3 (+0.5, +0.5, 0)(우상단) ⇒ 사각형
      • 중심점을 ‘피벗’(기준점)이라고 한다.
      • 피벗은 정점으로 놓을 수도 있다.
      • 구조체로 정리할 수 있다.
      struct Vertex{
      	Vector3 Position;
      	Vector3 Normal;
      }
      Vertex v[4];
      int I[6];
      
    • 해당 정점마다 수직이 되는 ‘노멀벡터’는 다를 수 있다.
  • 토폴로지(topology)
    • 점 목록, 선 목록, Triangle List, Strip, Fan 등 파이프라인이 꼭짓점을 해석 및 렌더링하는 방식을 정의한다.
    • Triangle List : 인덱스 하나에 정점 3개가 들어가는 배열이다.
      • 삼각형 목록에는 3개 이상의 꼭짓점이 있어야 하고 꼭짓점의 총수는 3의 배수여야 한다.
      • 0 - 1 - 2 → 2 - 1 - 3으로 이미 그렸던 선을 따라서 점을 연결한다.
      • 얘는 새로운 점을 연결하려면 정점 3개가 더 필요한다.
      • 즉, 삼각형 2개 만드는데 6개의 점이 필요하다.
    • Strip : 점만 찍으면 삼각형이 생긴다.
      • 일련의 연결된 삼각형으로, 삼각형이 연결되었기 때문에 각 삼각형의 세 꼭짓점을 반복해서 지정할 필요가 없다.
      • (0, 1, 2) → (0, 1, 2, 3)
      • 점을 찍으면 그걸 중심으로 가장 가까운 점과의 선이 연결된다.
      • 즉, 삼각형 2개 만드는데 4개의 점만 필요하다.
    • Fan : 0을 기준으로 선이 그려진다.
      • 모든 삼각형이 하나의 꼭짓점을 공유한다는 점을 제외하고 삼각형 스트립과 비슷하다.
      • 0 - 1 , 0 - 2 , 0 - 3
      • 삼각형 2개 만드는데 4개의 점이 필요하지만 0에서부터 이어진 선이다.
  • 유니티에서는 Transform을 Local이라고 부른다.
    • Transform(Local) → Global
  • 실제 그래픽스(DX)에서는 정점의 좌표를 Local이라고 부르고 단위벡터를 더한 ‘이동한 벡터’를 월드벡터 라고 한다.
    • Local → World → Global
    • 18일 그래픽 렌더링 파이프라인 수정했음 이거하고 합쳐야함

레이캐스트

  • 반직선에 닿는 충돌체를 찾아내는 기능
  • 가상의 “레이저 빔”을 원점에서부터 레이에 따라 씬 안의 콜라이더에 충돌할 때까지 보낸다.
    • 오브젝트와 RaycastHit 오브젝트의 충돌된 점에 대한 정보를 반환한다.
    • 스크린상 나타난 이미지를 기반하여 오브젝트가 어디에 위치하는지 찾는 유용한 방법다.

인스피케이터

  • 콜라이더를 가진 오브젝트끼리 충돌할 때 충돌을 일으키는 주체를 ‘인스피케이터’ 라고 부르는 게임 프로그램 상의 개념이다.
    • 예를들어, 칼을 다른 사람에게 휘두르는 상황을 만들때 칼에게도 콜라이더가 있어 충돌 정보를 휘두르는 사람에게도 전해주고 휘둘러져 맞은 사람에게도 전달한다.
    • 이때 누가 쐈든 휘둘렀든 해서 충돌을 하는 ‘칼’을 인스피케이터 라고 부른다.

OnCollision, OnTrigger 함수

개발할때 피해야할 상황 

  1. is - a
    1. A 클래스와 B클래스가 같은 상황 = 상속관계
    2. 사용하지 않는 함수를 상속받는 상황을 피해야한다.
    3. 인터페이스를 사용해서 피한다.
  2. has a
    1. A 클래스가 B클래스를 소유하는 상황
    2. B클래스의 함수를 사용하려면 A를 호출하고 다시 B를 호출하는 반복이 될 수 있다.
      1. 절차적 프로그래밍과 다를게 없어진다.
    3. 결합도는 낮추고(클래 응집도(비슷한기능들을 모아놓는것)는 높여야한다.
    Class A{
    	B ob;
    	void Add(){
    		ob.Test();
    	}
    	void print(){
    	
    	}
    }
    
class B{
	A obb;
	void Test(){
		obb.print();
	}
}

delegate (위임자)

  • 결합도를 낮춰주는 기능을 가지고 있다.
  • 호출되는걸 다른쪽에게 위임해준다.
    • 객체 자체를 주는게 아니라 호출해야할 함수의 주소만 준다.

'공부 > Unity' 카테고리의 다른 글

24.03.22  (1) 2024.03.22
24.03.21  (0) 2024.03.21
24.03.19  (1) 2024.03.19
24.03.18  (5) 2024.03.18
24.03.15  (0) 2024.03.15