낑깡의 게임 프로그래밍 도전기

2023년 8월 19일 토요일 Unity - 축+, GetComponent, Find 시리즈와 충돌, Teg 본문

카테고리 없음

2023년 8월 19일 토요일 Unity - 축+, GetComponent, Find 시리즈와 충돌, Teg

낑깡겜플밍 2023. 8. 19. 21:27
반응형
SMALL

Vector 는 구조체 형식이며 스태틱이라 데이터 영역에 할당된다.

 

에러가 생김.
이유는 하나하나 못바꾸게 막아 두었기 때문

*위의 예시는 좌표자체를 바꾸는 것이라 world축에서 유용하다. (Local기준일때 Translate 사용) 

기본적으로 Local기준이라 Space.Self가 생략되어있음. world기준으로 하려면 위처럼 명시적으로 변환가능.

Rotate도 Local기준

 

GetComponent : 게임오브젝트의 컴포넌트를 가져오게 하는 함수

GetComponent<BoxCollider>();는 앞에 gameObjet.GetComponent<BoxCollider>();가 생략되어있다.

이렇게도 사용가능하나 함수를 거쳐서 온다는 건 연산을 그많큼 많이 한다는 뜻. (그래서 자주 쓴다면 미리 저장해서 바로 호출하여 연산을 그만큼 줄인다)

 

public을 사용하면 유니티에서도 확인 가능하고 카메라를 채워주지 않아도 드래그해서 직접 넣어줄 수 있다.(오른 쪽 Cam칸 은 드래그해서 넣음)

Find 시리즈(유니티 오브젝트를 찾는 기능)를 사용하며 연산이 더 많이 들어가기때문에 가급적이면 사용하지 않는게 좋음(남용 금지). 기본적으로 검색을 해서 가져오는 기능 (실행 후 가져다쓸때 쓴다고?? 런타임에서 새로만들어진 놈이 기존의 놈을 찾아야할때)

//Find는 GameObjet.Find("게임오브젝트이름")으로
//특정 게임오브젝트를 가져올 수 있지만 위험하다
//이름을 통해 찾는 다는건 많은 것이 있을때 검색으로 인해 연산이 그만큼 증가
//문자열이기 때문에 오타 등으로 오류가 많이 생길 수 있음
//이름을 제대로 쓰더라고 후에 Hierarchy에서 이름을 바꾸면 찾을 수 없다
//똑같은 이름이 여러개면 어떤 것을 가지고 와야할지 알 수 없음

 

FindOfType = 

 //특정 컴포넌트를 찾아서 가져온다(박스콜라이더라는 오브젝트를 찾아 넣는 것) Find보다 더 안 좋을 수 있다.
 //모든 컴포넌트에 박스 콜라이더를 찾아보고 추가하는 것이라.
 //Find보다 나은 점은 최소한 이름으로 실수할 일은 없기 때문에
 //하지만 타입이 같을 때 어떤것을 가지고와야할지 모르는 문제는 동일

 

FindObjectOfType = 해당 타입을 하나만 가져오는거

 

FindObjectsOfType = 해당 타입을 배열의 형태로 다 가지고옴

//마찬가지로 연산이 많이 들어감

 

 

 

 

Collider : 충돌체, 충돌범위

파랑은 피격범위 빨강은 공격범위

충돌을 하려면 충돌범위를 지정해주는 콜라이더와 리지드바디라는 강체(둘 중 하나는 있어야 함)가 필요함

 

 

Mass: 질량 / Drag: 위치에 대한(밀려지는) 저항 / Angular Drag: 회전에 대한 저항 / UseGravity: 중력작용 / Is Kinematic
리지드 바디 설명

 

리지드바디 컴포넌트가 없는 콜라이더를 '스테틱 콜라이더'라고 부름

리지드바디 컴포넌트가 있는 콜라이더를 '리지드바디 콜라이더'라고 부름

(*Static 정적인, Rigidbody 동적인)

 

 

충돌 관련 표

빈칸은 충돌X

collision 충돌 : 보통 벽에 막히는거(보통 물리적 충돌 *보통이며 100%는 아니다)

trigger 충돌 : 보통 보이지 않는 어떠한 영역에서 충돌, 영역 내 이벤트 발생 및 거점 점령 등(트리거가 발동했다)

//스테틱콜라이더 끼리는 충돌이 일어나지 않는다

키네마틱 : 나는 영향을 안받고 상대방은 받는 것. 중력은X (보통 무기를 쥘 때, 폴가이즈에서 다가오는 부술수 없는 장애물 등 한쪽이 물리적 충돌을 받으면 안될 때)

 

여기에 체크하면 스테틱 트리거 콜라이더라고 부름
여기를 체크하면 리지드바디 트리거 콜라이더라고 부름

트리거 체크가 되면 '트리커' 수식어가 붙음

키네마틱 체크가 되면 '키네마틱' 수식어가 붙음

다 체크되어있으면 리지드바디 키네마틱 트리거 콜라이더

 

이렇게 지정해주고 나누어 쓰는 이유는 동적인 놈들이랑 부딪치면 연산이 많이 들어간다. 정적+동적은 그만큼 한놈은 연산을 안해도 되는 것이다. 그래서 리지드 바디는 필요할 때만 쓰고 벽이나 이런것은 스태틱으로 설정함

 

충돌 별 호출 기능 설정과 tag 활용

반응형
LIST