오브젝트에 카메라 시점 고정
그래픽 렌더링 파이프라인
- 메쉬를 이루는 기본 단위 : 삼각형
- 메쉬는회전할때 각각 시계방향으로 회전한다.
- 이게 반대가 된다면 백페이스 컬링이 걸린다.
- DrawPrimitive : IA에 들어있는 이 과정은 현재 데이터 입력 스트림 집합에서 지정된 형식의 인덱스 되지 않은 기하학적 기본 형식 시퀀스를 렌더링한다.
- 삼각형의 한 꼭짓점을 가리키는 단어 : 정점(Vertex)
- 토폴로지(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 함수
개발할때 피해야할 상황
- is - a
- A 클래스와 B클래스가 같은 상황 = 상속관계
- 사용하지 않는 함수를 상속받는 상황을 피해야한다.
- 인터페이스를 사용해서 피한다.
- has a
- A 클래스가 B클래스를 소유하는 상황
- B클래스의 함수를 사용하려면 A를 호출하고 다시 B를 호출하는 반복이 될 수 있다.
- 절차적 프로그래밍과 다를게 없어진다.
- 결합도는 낮추고(클래 응집도(비슷한기능들을 모아놓는것)는 높여야한다.
Class A{
B ob;
void Add(){
ob.Test();
}
void print(){
}
}
class B{
A obb;
void Test(){
obb.print();
}
}
delegate (위임자)
- 결합도를 낮춰주는 기능을 가지고 있다.
- 호출되는걸 다른쪽에게 위임해준다.
- 객체 자체를 주는게 아니라 호출해야할 함수의 주소만 준다.